| 507 | } |
| 508 | |
| 509 | bool websocket::peek_head_2bytes(void) |
| 510 | { |
| 511 | size_t len = peek_buf_->size(); |
| 512 | |
| 513 | if (len >= 2) { |
| 514 | logger_fatal("overflow, len=%ld", (long) len); |
| 515 | } |
| 516 | |
| 517 | if (!client_.readn_peek(peek_buf_, 2 - len, false)) { |
| 518 | return false; |
| 519 | } |
| 520 | |
| 521 | assert(peek_buf_->size() == 2); |
| 522 | |
| 523 | unsigned char* s = (unsigned char*) peek_buf_->c_str(); |
| 524 | update_head_2bytes(s[0], s[1]); |
| 525 | |
| 526 | if (header_.payload_len == 126) { |
| 527 | status_ = WS_HEAD_LEN_2BYTES; |
| 528 | } else if (header_.payload_len > 126) { |
| 529 | status_ = WS_HEAD_LEN_8BYTES; |
| 530 | } |
| 531 | // header_.payload_len <= 125 |
| 532 | else if (header_.mask) { |
| 533 | status_ = WS_HEAD_MASKING_KEY; |
| 534 | } else { |
| 535 | status_ = WS_HEAD_FINISH; |
| 536 | } |
| 537 | |
| 538 | peek_buf_->clear(); |
| 539 | return true; |
| 540 | } |
| 541 | |
| 542 | bool websocket::peek_head_len_2bytes(void) |
| 543 | { |
nothing calls this directly
no test coverage detected