| line |
true |
false |
branch |
|
148
|
5032 |
51 |
while (likely(buf_end - buf >= 8)) { |
|
155
|
16 |
5016 |
DOIT(); |
|
156
|
420 |
4596 |
DOIT(); |
|
157
|
37 |
4559 |
DOIT(); |
|
158
|
21 |
4538 |
DOIT(); |
|
159
|
44 |
4494 |
DOIT(); |
|
160
|
420 |
4074 |
DOIT(); |
|
161
|
23 |
4051 |
DOIT(); |
|
162
|
543 |
3508 |
DOIT(); |
|
166
|
1524 |
0 |
if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { |
|
|
0 |
1524 |
if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { |
|
|
0 |
0 |
if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { |
|
173
|
2 |
135 |
CHECK_EOF(); |
|
174
|
49 |
86 |
if (unlikely(!IS_PRINTABLE_ASCII(*buf))) { |
|
175
|
49 |
0 |
if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { |
|
|
0 |
49 |
if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { |
|
|
0 |
0 |
if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { |
|
181
|
1558 |
15 |
if (likely(*buf == '\015')) { |
|
183
|
0 |
1558 |
EXPECT_CHAR('\012'); |
|
|
0 |
1558 |
EXPECT_CHAR('\012'); |
|
185
|
14 |
1 |
} else if (*buf == '\012') { |
|
200
|
12 |
4 |
buf = last_len < 3 ? buf : buf + last_len - 3; |
|
203
|
10 |
29102 |
CHECK_EOF(); |
|
204
|
21 |
29081 |
if (*buf == '\015') { |
|
206
|
0 |
21 |
CHECK_EOF(); |
|
207
|
0 |
21 |
EXPECT_CHAR('\012'); |
|
|
0 |
21 |
EXPECT_CHAR('\012'); |
|
209
|
0 |
29081 |
} else if (*buf == '\012') { |
|
216
|
6 |
29096 |
if (ret_cnt == 2) { |
|
261
|
0 |
2160 |
if (!found) { |
|
262
|
2160 |
0 |
CHECK_EOF(); |
|
265
|
2153 |
15890 |
if (*buf == next_char) { |
|
267
|
5 |
15885 |
} else if (!token_char_map[(unsigned char)*buf]) { |
|
272
|
2 |
15883 |
CHECK_EOF(); |
|
283
|
0 |
571 |
if (buf_end - buf < 9) { |
|
287
|
1 |
570 |
EXPECT_CHAR_NO_CHECK('H'); |
|
288
|
0 |
570 |
EXPECT_CHAR_NO_CHECK('T'); |
|
289
|
0 |
570 |
EXPECT_CHAR_NO_CHECK('T'); |
|
290
|
0 |
570 |
EXPECT_CHAR_NO_CHECK('P'); |
|
291
|
0 |
570 |
EXPECT_CHAR_NO_CHECK('/'); |
|
292
|
0 |
570 |
EXPECT_CHAR_NO_CHECK('1'); |
|
293
|
0 |
570 |
EXPECT_CHAR_NO_CHECK('.'); |
|
294
|
570 |
0 |
PARSE_INT(minor_version, 1); |
|
|
0 |
570 |
PARSE_INT(minor_version, 1); |
|
302
|
3 |
2139 |
CHECK_EOF(); |
|
303
|
556 |
1583 |
if (*buf == '\015') { |
|
305
|
0 |
556 |
EXPECT_CHAR('\012'); |
|
|
0 |
556 |
EXPECT_CHAR('\012'); |
|
307
|
5 |
1578 |
} else if (*buf == '\012') { |
|
311
|
2 |
1576 |
if (*num_headers == max_headers) { |
|
315
|
1009 |
567 |
if (!(*num_headers != 0 && (*buf == ' ' || *buf == '\t'))) { |
|
|
1008 |
1 |
if (!(*num_headers != 0 && (*buf == ' ' || *buf == '\t'))) { |
|
|
1008 |
0 |
if (!(*num_headers != 0 && (*buf == ' ' || *buf == '\t'))) { |
|
318
|
0 |
1575 |
if ((buf = parse_token(buf, buf_end, &headers[*num_headers].name, &headers[*num_headers].name_len, ':', ret)) == NULL) { |
|
321
|
0 |
1575 |
if (headers[*num_headers].name_len == 0) { |
|
327
|
1 |
3153 |
CHECK_EOF(); |
|
328
|
1575 |
1578 |
if (!(*buf == ' ' || *buf == '\t')) { |
|
|
1574 |
1 |
if (!(*buf == ' ' || *buf == '\t')) { |
|
338
|
3 |
1572 |
if ((buf = get_token_to_eol(buf, buf_end, &value, &value_len, ret)) == NULL) { |
|
343
|
1571 |
1 |
for (; value_end != value; --value_end) { |
|
345
|
1571 |
0 |
if (!(c == ' ' || c == '\t')) { |
|
|
1571 |
0 |
if (!(c == ' ' || c == '\t')) { |
|
360
|
0 |
585 |
CHECK_EOF(); |
|
361
|
0 |
585 |
if (*buf == '\015') { |
|
363
|
0 |
0 |
EXPECT_CHAR('\012'); |
|
|
0 |
0 |
EXPECT_CHAR('\012'); |
|
364
|
0 |
585 |
} else if (*buf == '\012') { |
|
369
|
7 |
578 |
if ((buf = parse_token(buf, buf_end, method, method_len, ' ', ret)) == NULL) { |
|
374
|
0 |
578 |
CHECK_EOF(); |
|
375
|
0 |
578 |
} while (*buf == ' '); |
|
376
|
0 |
578 |
ADVANCE_TOKEN(*path, *path_len); |
|
|
578 |
0 |
ADVANCE_TOKEN(*path, *path_len); |
|
|
572 |
60660 |
ADVANCE_TOKEN(*path, *path_len); |
|
|
2 |
60658 |
ADVANCE_TOKEN(*path, *path_len); |
|
|
0 |
2 |
ADVANCE_TOKEN(*path, *path_len); |
|
|
0 |
0 |
ADVANCE_TOKEN(*path, *path_len); |
|
|
4 |
60654 |
ADVANCE_TOKEN(*path, *path_len); |
|
379
|
0 |
572 |
CHECK_EOF(); |
|
380
|
0 |
572 |
} while (*buf == ' '); |
|
381
|
571 |
1 |
if (*method_len == 0 || *path_len == 0) { |
|
|
0 |
571 |
if (*method_len == 0 || *path_len == 0) { |
|
385
|
1 |
570 |
if ((buf = parse_http_version(buf, buf_end, minor_version, ret)) == NULL) { |
|
388
|
565 |
5 |
if (*buf == '\015') { |
|
390
|
0 |
565 |
EXPECT_CHAR('\012'); |
|
|
0 |
565 |
EXPECT_CHAR('\012'); |
|
391
|
5 |
0 |
} else if (*buf == '\012') { |
|
417
|
16 |
579 |
if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { |
|
|
10 |
6 |
if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { |
|
421
|
24 |
561 |
if ((buf = parse_request(buf, buf_end, method, method_len, path, path_len, minor_version, headers, num_headers, max_headers, |
|
433
|
0 |
0 |
if ((buf = parse_http_version(buf, buf_end, minor_version, ret)) == NULL) { |
|
437
|
0 |
0 |
if (*buf != ' ') { |
|
443
|
0 |
0 |
CHECK_EOF(); |
|
444
|
0 |
0 |
} while (*buf == ' '); |
|
446
|
0 |
0 |
if (buf_end - buf < 4) { |
|
450
|
0 |
0 |
PARSE_INT_3(status); |
|
|
0 |
0 |
PARSE_INT_3(status); |
|
|
0 |
0 |
PARSE_INT_3(status); |
|
|
0 |
0 |
PARSE_INT_3(status); |
|
|
0 |
0 |
PARSE_INT_3(status); |
|
|
0 |
0 |
PARSE_INT_3(status); |
|
453
|
0 |
0 |
if ((buf = get_token_to_eol(buf, buf_end, msg, msg_len, ret)) == NULL) { |
|
456
|
0 |
0 |
if (*msg_len == 0) { |
|
458
|
0 |
0 |
} else if (**msg == ' ') { |
|
464
|
0 |
0 |
} while (**msg == ' '); |
|
489
|
0 |
0 |
if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { |
|
|
0 |
0 |
if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { |
|
493
|
0 |
0 |
if ((buf = parse_response(buf, buf_end, minor_version, status, msg, msg_len, headers, num_headers, max_headers, &r)) == NULL) { |
|
510
|
0 |
0 |
if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { |
|
|
0 |
0 |
if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { |
|
514
|
0 |
0 |
if ((buf = parse_headers(buf, buf_end, headers, num_headers, max_headers, &r)) == NULL) { |
|
534
|
0 |
0 |
if ('0' <= ch && ch <= '9') { |
|
|
0 |
0 |
if ('0' <= ch && ch <= '9') { |
|
536
|
0 |
0 |
} else if ('A' <= ch && ch <= 'F') { |
|
|
0 |
0 |
} else if ('A' <= ch && ch <= 'F') { |
|
538
|
0 |
0 |
} else if ('a' <= ch && ch <= 'f') { |
|
|
0 |
0 |
} else if ('a' <= ch && ch <= 'f') { |
|
557
|
0 |
0 |
if (src == bufsz) |
|
559
|
0 |
0 |
if ((v = decode_hex(buf[src])) == -1) { |
|
560
|
0 |
0 |
if (decoder->_hex_count == 0) { |
|
565
|
0 |
0 |
switch (buf[src]) { |
|
578
|
0 |
0 |
if (decoder->_hex_count == sizeof(size_t) * 2) { |
|
591
|
0 |
0 |
if (src == bufsz) |
|
593
|
0 |
0 |
if (buf[src] == '\015') { |
|
595
|
0 |
0 |
} else if (buf[src] == '\012') { |
|
604
|
0 |
0 |
if (src == bufsz) |
|
606
|
0 |
0 |
if (buf[src] != '\012') { |
|
611
|
0 |
0 |
if (decoder->bytes_left_in_chunk == 0) { |
|
612
|
0 |
0 |
if (decoder->consume_trailer) { |
|
623
|
0 |
0 |
if (avail < decoder->bytes_left_in_chunk) { |
|
624
|
0 |
0 |
if (dst != src) |
|
631
|
0 |
0 |
if (dst != src) |
|
640
|
0 |
0 |
if (src == bufsz) |
|
642
|
0 |
0 |
if (buf[src] != '\015') { |
|
650
|
0 |
0 |
if (src == bufsz) |
|
652
|
0 |
0 |
if (buf[src] != '\012') { |
|
661
|
0 |
0 |
if (src == bufsz) |
|
663
|
0 |
0 |
if (buf[src] != '\015') |
|
666
|
0 |
0 |
if (buf[src++] == '\012') |
|
672
|
0 |
0 |
if (src == bufsz) |
|
674
|
0 |
0 |
if (buf[src] == '\012') |
|
688
|
0 |
0 |
if (dst != src) |
|
692
|
0 |
0 |
if (ret == -2) { |
|
694
|
0 |
0 |
if (decoder->_total_overhead >= 100 * 1024 && decoder->_total_read - decoder->_total_overhead < decoder->_total_read / 4) |
|
|
0 |
0 |
if (decoder->_total_overhead >= 100 * 1024 && decoder->_total_read - decoder->_total_overhead < decoder->_total_read / 4) |