| line |
true |
false |
branch |
|
30
|
0 |
1030 |
assert(_state != State::DONE); |
|
35
|
465 |
565 |
if (_state == State::FIRST) { |
|
36
|
0 |
465 |
if (data == end) return false; |
|
46
|
576 |
454 |
if (_state == State::SECOND) { |
|
47
|
111 |
465 |
if (data == end) return false; |
|
55
|
495 |
424 |
if (_state == State::LENGTH) { |
|
56
|
335 |
160 |
if (_slen < 126) { |
|
61
|
12 |
148 |
else if (data == end) return false; |
|
62
|
139 |
9 |
else if (_slen == 126) { |
|
63
|
11 |
128 |
if (!parse_binary_number(_len16, data, end - data)) return false; |
|
69
|
7 |
2 |
if (!parse_binary_number(length, data, end - data)) return false; |
|
76
|
889 |
0 |
if (_state == State::MASK) { |
|
77
|
62 |
827 |
if (!has_mask) _state = State::DONE; |
|
78
|
106 |
721 |
else if (data == end) return false; |
|
80
|
318 |
403 |
if (!parse_binary_number(mask, data, end - data)) return false; |
|
86
|
135 |
330 |
if (data == end) buf.clear(); // no extra data after the end of frame |
|
87
|
330 |
0 |
else buf.offset(data - buf.data()); // leave rest in buffer |
|
94
|
234 |
0 |
char* ptr = ret.buf(); |
|
99
|
118 |
116 |
if (plen < 126) { |
|
101
|
114 |
2 |
} else if (plen < 65536) { |
|
111
|
122 |
112 |
if (has_mask) { |
|
121
|
0 |
31 |
if (!payload) code = (uint16_t)CloseCode::UNKNOWN; |
|
122
|
6 |
25 |
else if (payload.length() < sizeof(code)) { |
|
128
|
25 |
0 |
message = payload.substr(sizeof(code)); |
|
136
|
3 |
0 |
char* buf = ret.buf(); |
|
139
|
2 |
1 |
if (message.length()) std::memcpy(buf, message.data(), message.length()); |
|
144
|
18 |
0 |
}}} |
|
|
18 |
0 |
}}} |