| line |
true |
false |
branch |
|
427
|
0 |
0 |
if (ch == ' ' || ch == '\r' || ch == '\n') { |
|
|
0 |
0 |
if (ch == ' ' || ch == '\r' || ch == '\n') { |
|
|
0 |
0 |
if (ch == ' ' || ch == '\r' || ch == '\n') { |
|
432
|
0 |
0 |
if (ch == '\t' || ch == '\f') { |
|
|
0 |
0 |
if (ch == '\t' || ch == '\f') { |
|
443
|
0 |
0 |
if (ch == '/' || ch == '*') { |
|
|
0 |
0 |
if (ch == '/' || ch == '*') { |
|
450
|
0 |
0 |
if (IS_ALPHA(ch)) { |
|
|
0 |
0 |
if (IS_ALPHA(ch)) { |
|
457
|
0 |
0 |
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') { |
|
|
0 |
0 |
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') { |
|
|
0 |
0 |
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') { |
|
|
0 |
0 |
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') { |
|
|
0 |
0 |
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') { |
|
|
0 |
0 |
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') { |
|
|
0 |
0 |
if (IS_ALPHANUM(ch) || ch == '+' || ch == '-' || ch == '.') { |
|
461
|
0 |
0 |
if (ch == ':') { |
|
468
|
0 |
0 |
if (ch == '/') { |
|
475
|
0 |
0 |
if (ch == '/') { |
|
482
|
0 |
0 |
if (ch == '@') { |
|
489
|
0 |
0 |
if (ch == '/') { |
|
493
|
0 |
0 |
if (ch == '?') { |
|
497
|
0 |
0 |
if (ch == '@') { |
|
501
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { |
|
508
|
0 |
0 |
if (IS_URL_CHAR(ch)) { |
|
524
|
0 |
0 |
if (IS_URL_CHAR(ch)) { |
|
540
|
0 |
0 |
if (IS_URL_CHAR(ch)) { |
|
555
|
0 |
0 |
if (IS_URL_CHAR(ch)) { |
|
559
|
0 |
0 |
switch (ch) { |
|
589
|
0 |
0 |
if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { |
|
593
|
0 |
0 |
if (len == 0) { |
|
599
|
0 |
0 |
CALLBACK_NOTIFY_NOADVANCE(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY_NOADVANCE(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY_NOADVANCE(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY_NOADVANCE(message_complete); |
|
615
|
0 |
0 |
if (parser->state == s_header_field) |
|
617
|
0 |
0 |
if (parser->state == s_header_value) |
|
619
|
0 |
0 |
switch (parser->state) { |
|
635
|
0 |
0 |
for (p=data; p != data + len; p++) { |
|
638
|
0 |
0 |
if (PARSING_HEADER(parser->state)) { |
|
641
|
0 |
0 |
if (parser->nread > HTTP_MAX_HEADER_SIZE) { |
|
654
|
0 |
0 |
if (ch == CR || ch == LF) |
|
|
0 |
0 |
if (ch == CR || ch == LF) |
|
662
|
0 |
0 |
if (ch == CR || ch == LF) |
|
|
0 |
0 |
if (ch == CR || ch == LF) |
|
667
|
0 |
0 |
if (ch == 'H') { |
|
670
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
681
|
0 |
0 |
if (ch == 'T') { |
|
685
|
0 |
0 |
if (ch != 'E') { |
|
716
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
721
|
0 |
0 |
STRICT_CHECK(ch != 'T'); |
|
726
|
0 |
0 |
STRICT_CHECK(ch != 'T'); |
|
731
|
0 |
0 |
STRICT_CHECK(ch != 'P'); |
|
736
|
0 |
0 |
STRICT_CHECK(ch != '/'); |
|
741
|
0 |
0 |
if (ch < '0' || ch > '9') { |
|
|
0 |
0 |
if (ch < '0' || ch > '9') { |
|
753
|
0 |
0 |
if (ch == '.') { |
|
758
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
766
|
0 |
0 |
if (parser->http_major > 999) { |
|
776
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
788
|
0 |
0 |
if (ch == ' ') { |
|
793
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
801
|
0 |
0 |
if (parser->http_minor > 999) { |
|
811
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
812
|
0 |
0 |
if (ch == ' ') { |
|
826
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
847
|
0 |
0 |
if (parser->status_code > 999) { |
|
858
|
0 |
0 |
if (ch == CR) { |
|
863
|
0 |
0 |
if (ch == LF) { |
|
870
|
0 |
0 |
STRICT_CHECK(ch != LF); |
|
876
|
0 |
0 |
if (ch == CR || ch == LF) |
|
|
0 |
0 |
if (ch == CR || ch == LF) |
|
881
|
0 |
0 |
if (!IS_ALPHA(ch)) { |
|
|
0 |
0 |
if (!IS_ALPHA(ch)) { |
|
910
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_begin); |
|
918
|
0 |
0 |
if (ch == '\0') { |
|
924
|
0 |
0 |
if (ch == ' ' && matcher[parser->index] == '\0') { |
|
|
0 |
0 |
if (ch == ' ' && matcher[parser->index] == '\0') { |
|
926
|
0 |
0 |
} else if (ch == matcher[parser->index]) { |
|
928
|
0 |
0 |
} else if (parser->method == HTTP_CONNECT) { |
|
929
|
0 |
0 |
if (parser->index == 1 && ch == 'H') { |
|
|
0 |
0 |
if (parser->index == 1 && ch == 'H') { |
|
931
|
0 |
0 |
} else if (parser->index == 2 && ch == 'P') { |
|
|
0 |
0 |
} else if (parser->index == 2 && ch == 'P') { |
|
936
|
0 |
0 |
} else if (parser->method == HTTP_MKCOL) { |
|
937
|
0 |
0 |
if (parser->index == 1 && ch == 'O') { |
|
|
0 |
0 |
if (parser->index == 1 && ch == 'O') { |
|
939
|
0 |
0 |
} else if (parser->index == 1 && ch == 'E') { |
|
|
0 |
0 |
} else if (parser->index == 1 && ch == 'E') { |
|
941
|
0 |
0 |
} else if (parser->index == 1 && ch == '-') { |
|
|
0 |
0 |
} else if (parser->index == 1 && ch == '-') { |
|
943
|
0 |
0 |
} else if (parser->index == 2 && ch == 'A') { |
|
|
0 |
0 |
} else if (parser->index == 2 && ch == 'A') { |
|
948
|
0 |
0 |
} else if (parser->method == HTTP_SUBSCRIBE) { |
|
949
|
0 |
0 |
if (parser->index == 1 && ch == 'E') { |
|
|
0 |
0 |
if (parser->index == 1 && ch == 'E') { |
|
954
|
0 |
0 |
} else if (parser->index == 1 && parser->method == HTTP_POST) { |
|
|
0 |
0 |
} else if (parser->index == 1 && parser->method == HTTP_POST) { |
|
955
|
0 |
0 |
if (ch == 'R') { |
|
957
|
0 |
0 |
} else if (ch == 'U') { |
|
959
|
0 |
0 |
} else if (ch == 'A') { |
|
964
|
0 |
0 |
} else if (parser->index == 2) { |
|
965
|
0 |
0 |
if (parser->method == HTTP_PUT) { |
|
966
|
0 |
0 |
if (ch == 'R') parser->method = HTTP_PURGE; |
|
967
|
0 |
0 |
} else if (parser->method == HTTP_UNLOCK) { |
|
968
|
0 |
0 |
if (ch == 'S') parser->method = HTTP_UNSUBSCRIBE; |
|
970
|
0 |
0 |
} else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') { |
|
|
0 |
0 |
} else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') { |
|
|
0 |
0 |
} else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') { |
|
983
|
0 |
0 |
if (ch == ' ') break; |
|
985
|
0 |
0 |
MARK(url); |
|
986
|
0 |
0 |
if (parser->method == HTTP_CONNECT) { |
|
991
|
0 |
0 |
if (parser->state == s_dead) { |
|
1004
|
0 |
0 |
switch (ch) { |
|
1013
|
0 |
0 |
if (parser->state == s_dead) { |
|
1033
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
1039
|
0 |
0 |
parser->state = (ch == CR) ? |
|
1042
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
|
0 |
0 |
CALLBACK_DATA(url); |
|
1046
|
0 |
0 |
if (parser->state == s_dead) { |
|
1068
|
0 |
0 |
STRICT_CHECK(ch != 'T'); |
|
1073
|
0 |
0 |
STRICT_CHECK(ch != 'T'); |
|
1078
|
0 |
0 |
STRICT_CHECK(ch != 'P'); |
|
1083
|
0 |
0 |
STRICT_CHECK(ch != '/'); |
|
1089
|
0 |
0 |
if (ch < '1' || ch > '9') { |
|
|
0 |
0 |
if (ch < '1' || ch > '9') { |
|
1101
|
0 |
0 |
if (ch == '.') { |
|
1106
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
1114
|
0 |
0 |
if (parser->http_major > 999) { |
|
1124
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
1136
|
0 |
0 |
if (ch == CR) { |
|
1141
|
0 |
0 |
if (ch == LF) { |
|
1148
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
1156
|
0 |
0 |
if (parser->http_minor > 999) { |
|
1167
|
0 |
0 |
if (ch != LF) { |
|
1178
|
0 |
0 |
if (ch == CR) { |
|
1183
|
0 |
0 |
if (ch == LF) { |
|
1192
|
0 |
0 |
if (!c) { |
|
1197
|
0 |
0 |
MARK(header_field); |
|
1230
|
0 |
0 |
if (c) { |
|
1237
|
0 |
0 |
parser->header_state = (c == 'o' ? h_CO : h_general); |
|
1242
|
0 |
0 |
parser->header_state = (c == 'n' ? h_CON : h_general); |
|
1264
|
0 |
0 |
if (parser->index > sizeof(CONNECTION)-1 |
|
1265
|
0 |
0 |
|| c != CONNECTION[parser->index]) { |
|
1267
|
0 |
0 |
} else if (parser->index == sizeof(CONNECTION)-2) { |
|
1276
|
0 |
0 |
if (parser->index > sizeof(PROXY_CONNECTION)-1 |
|
1277
|
0 |
0 |
|| c != PROXY_CONNECTION[parser->index]) { |
|
1279
|
0 |
0 |
} else if (parser->index == sizeof(PROXY_CONNECTION)-2) { |
|
1288
|
0 |
0 |
if (parser->index > sizeof(CONTENT_LENGTH)-1 |
|
1289
|
0 |
0 |
|| c != CONTENT_LENGTH[parser->index]) { |
|
1291
|
0 |
0 |
} else if (parser->index == sizeof(CONTENT_LENGTH)-2) { |
|
1300
|
0 |
0 |
if (parser->index > sizeof(TRANSFER_ENCODING)-1 |
|
1301
|
0 |
0 |
|| c != TRANSFER_ENCODING[parser->index]) { |
|
1303
|
0 |
0 |
} else if (parser->index == sizeof(TRANSFER_ENCODING)-2) { |
|
1312
|
0 |
0 |
if (parser->index > sizeof(UPGRADE)-1 |
|
1313
|
0 |
0 |
|| c != UPGRADE[parser->index]) { |
|
1315
|
0 |
0 |
} else if (parser->index == sizeof(UPGRADE)-2) { |
|
1324
|
0 |
0 |
if (ch != ' ') parser->header_state = h_general; |
|
1334
|
0 |
0 |
if (ch == ':') { |
|
1336
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
1340
|
0 |
0 |
if (ch == CR) { |
|
1342
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
1346
|
0 |
0 |
if (ch == LF) { |
|
1348
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
|
0 |
0 |
CALLBACK_DATA(header_field); |
|
1358
|
0 |
0 |
if (ch == ' ' || ch == '\t') break; |
|
|
0 |
0 |
if (ch == ' ' || ch == '\t') break; |
|
1360
|
0 |
0 |
MARK(header_value); |
|
1365
|
0 |
0 |
if (ch == CR) { |
|
1368
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
1372
|
0 |
0 |
if (ch == LF) { |
|
1374
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
1388
|
0 |
0 |
if ('c' == c) { |
|
1396
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
1406
|
0 |
0 |
if (c == 'k') { |
|
1409
|
0 |
0 |
} else if (c == 'c') { |
|
1426
|
0 |
0 |
if (ch == CR) { |
|
1428
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
|
0 |
0 |
CALLBACK_DATA(header_value); |
|
1432
|
0 |
0 |
if (ch == LF) { |
|
1434
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
1453
|
0 |
0 |
if (ch == ' ') break; |
|
1455
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
|
0 |
0 |
if (!IS_NUM(ch)) { |
|
1465
|
0 |
0 |
if (t < parser->content_length || t == ULLONG_MAX) { |
|
|
0 |
0 |
if (t < parser->content_length || t == ULLONG_MAX) { |
|
1477
|
0 |
0 |
if (parser->index > sizeof(CHUNKED)-1 |
|
1478
|
0 |
0 |
|| c != CHUNKED[parser->index]) { |
|
1480
|
0 |
0 |
} else if (parser->index == sizeof(CHUNKED)-2) { |
|
1488
|
0 |
0 |
if (parser->index > sizeof(KEEP_ALIVE)-1 |
|
1489
|
0 |
0 |
|| c != KEEP_ALIVE[parser->index]) { |
|
1491
|
0 |
0 |
} else if (parser->index == sizeof(KEEP_ALIVE)-2) { |
|
1499
|
0 |
0 |
if (parser->index > sizeof(CLOSE)-1 || c != CLOSE[parser->index]) { |
|
|
0 |
0 |
if (parser->index > sizeof(CLOSE)-1 || c != CLOSE[parser->index]) { |
|
1501
|
0 |
0 |
} else if (parser->index == sizeof(CLOSE)-2) { |
|
1509
|
0 |
0 |
if (ch != ' ') parser->header_state = h_general; |
|
1522
|
0 |
0 |
STRICT_CHECK(ch != LF); |
|
1545
|
0 |
0 |
if (ch == ' ' || ch == '\t') |
|
|
0 |
0 |
if (ch == ' ' || ch == '\t') |
|
1557
|
0 |
0 |
STRICT_CHECK(ch != LF); |
|
1559
|
0 |
0 |
if (parser->flags & F_TRAILING) { |
|
1561
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
1562
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
1570
|
0 |
0 |
(parser->flags & F_UPGRADE || parser->method == HTTP_CONNECT); |
|
|
0 |
0 |
(parser->flags & F_UPGRADE || parser->method == HTTP_CONNECT); |
|
1581
|
0 |
0 |
if (settings->on_headers_complete) { |
|
1596
|
0 |
0 |
if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { |
|
1605
|
0 |
0 |
STRICT_CHECK(ch != LF); |
|
1610
|
0 |
0 |
if (parser->upgrade) { |
|
1611
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
1612
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
1616
|
0 |
0 |
if (parser->flags & F_SKIPBODY) { |
|
1617
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
1618
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
1619
|
0 |
0 |
} else if (parser->flags & F_CHUNKED) { |
|
1623
|
0 |
0 |
if (parser->content_length == 0) { |
|
1625
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
1626
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
1627
|
0 |
0 |
} else if (parser->content_length != ULLONG_MAX) { |
|
1634
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
1635
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
1651
|
0 |
0 |
assert(parser->content_length != 0 |
|
|
0 |
0 |
assert(parser->content_length != 0 |
|
1659
|
0 |
0 |
MARK(body); |
|
1663
|
0 |
0 |
if (parser->content_length == 0) { |
|
1675
|
0 |
0 |
CALLBACK_DATA_(body, p - body_mark + 1, p - data); |
|
|
0 |
0 |
CALLBACK_DATA_(body, p - body_mark + 1, p - data); |
|
|
0 |
0 |
CALLBACK_DATA_(body, p - body_mark + 1, p - data); |
|
|
0 |
0 |
CALLBACK_DATA_(body, p - body_mark + 1, p - data); |
|
|
0 |
0 |
CALLBACK_DATA_(body, p - body_mark + 1, p - data); |
|
1684
|
0 |
0 |
MARK(body); |
|
1690
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
|
0 |
0 |
parser->state = NEW_MESSAGE(); |
|
1691
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
|
0 |
0 |
CALLBACK_NOTIFY(message_complete); |
|
1696
|
0 |
0 |
assert(parser->nread == 1); |
|
1697
|
0 |
0 |
assert(parser->flags & F_CHUNKED); |
|
1700
|
0 |
0 |
if (unhex_val == -1) { |
|
1714
|
0 |
0 |
assert(parser->flags & F_CHUNKED); |
|
1716
|
0 |
0 |
if (ch == CR) { |
|
1723
|
0 |
0 |
if (unhex_val == -1) { |
|
1724
|
0 |
0 |
if (ch == ';' || ch == ' ') { |
|
|
0 |
0 |
if (ch == ';' || ch == ' ') { |
|
1738
|
0 |
0 |
if (t < parser->content_length || t == ULLONG_MAX) { |
|
|
0 |
0 |
if (t < parser->content_length || t == ULLONG_MAX) { |
|
1749
|
0 |
0 |
assert(parser->flags & F_CHUNKED); |
|
1751
|
0 |
0 |
if (ch == CR) { |
|
1760
|
0 |
0 |
assert(parser->flags & F_CHUNKED); |
|
1761
|
0 |
0 |
STRICT_CHECK(ch != LF); |
|
1765
|
0 |
0 |
if (parser->content_length == 0) { |
|
1779
|
0 |
0 |
assert(parser->flags & F_CHUNKED); |
|
1780
|
0 |
0 |
assert(parser->content_length != 0 |
|
|
0 |
0 |
assert(parser->content_length != 0 |
|
1786
|
0 |
0 |
MARK(body); |
|
1790
|
0 |
0 |
if (parser->content_length == 0) { |
|
1798
|
0 |
0 |
assert(parser->flags & F_CHUNKED); |
|
1799
|
0 |
0 |
assert(parser->content_length == 0); |
|
1800
|
0 |
0 |
STRICT_CHECK(ch != CR); |
|
1802
|
0 |
0 |
CALLBACK_DATA(body); |
|
|
0 |
0 |
CALLBACK_DATA(body); |
|
|
0 |
0 |
CALLBACK_DATA(body); |
|
|
0 |
0 |
CALLBACK_DATA(body); |
|
|
0 |
0 |
CALLBACK_DATA(body); |
|
1806
|
0 |
0 |
assert(parser->flags & F_CHUNKED); |
|
1807
|
0 |
0 |
STRICT_CHECK(ch != LF); |
|
1829
|
0 |
0 |
assert(((header_field_mark ? 1 : 0) + |
|
1834
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_field); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_field); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_field); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_field); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_field); |
|
1835
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(header_value); |
|
1836
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(url); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(url); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(url); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(url); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(url); |
|
1837
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(body); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(body); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(body); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(body); |
|
|
0 |
0 |
CALLBACK_DATA_NOADVANCE(body); |
|
1842
|
0 |
0 |
if (HTTP_PARSER_ERRNO(parser) == HPE_OK) { |
|
1854
|
0 |
0 |
if (parser->type == HTTP_REQUEST) { |
|
1859
|
0 |
0 |
if (parser->status_code / 100 == 1 || /* 1xx e.g. Continue */ |
|
|
0 |
0 |
if (parser->status_code / 100 == 1 || /* 1xx e.g. Continue */ |
|
1860
|
0 |
0 |
parser->status_code == 204 || /* No Content */ |
|
1861
|
0 |
0 |
parser->status_code == 304 || /* Not Modified */ |
|
1866
|
0 |
0 |
if ((parser->flags & F_CHUNKED) || parser->content_length != ULLONG_MAX) { |
|
|
0 |
0 |
if ((parser->flags & F_CHUNKED) || parser->content_length != ULLONG_MAX) { |
|
1877
|
0 |
0 |
if (parser->http_major > 0 && parser->http_minor > 0) { |
|
|
0 |
0 |
if (parser->http_major > 0 && parser->http_minor > 0) { |
|
1879
|
0 |
0 |
if (parser->flags & F_CONNECTION_CLOSE) { |
|
1884
|
0 |
0 |
if (!(parser->flags & F_CONNECTION_KEEP_ALIVE)) { |
|
1896
|
0 |
0 |
return ELEM_AT(method_strings, m, ""); |
|
1907
|
0 |
0 |
parser->state = (t == HTTP_REQUEST ? s_start_req : (t == HTTP_RESPONSE ? s_start_res : s_start_req_or_res)); |
|
|
0 |
0 |
parser->state = (t == HTTP_REQUEST ? s_start_req : (t == HTTP_RESPONSE ? s_start_res : s_start_req_or_res)); |
|
1913
|
0 |
0 |
assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0]))); |
|
1919
|
0 |
0 |
assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0]))); |
|
1928
|
0 |
0 |
if (ch == '@') { |
|
1932
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_USERINFO_CHAR(ch)) { |
|
1938
|
0 |
0 |
if (ch == '[') { |
|
1942
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
1949
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
|
0 |
0 |
if (IS_HOST_CHAR(ch)) { |
|
1955
|
0 |
0 |
if (ch == ':') { |
|
1962
|
0 |
0 |
if (ch == ']') { |
|
1968
|
0 |
0 |
if (IS_HEX(ch) || ch == ':') { |
|
|
0 |
0 |
if (IS_HEX(ch) || ch == ':') { |
|
|
0 |
0 |
if (IS_HEX(ch) || ch == ':') { |
|
|
0 |
0 |
if (IS_HEX(ch) || ch == ':') { |
|
|
0 |
0 |
if (IS_HEX(ch) || ch == ':') { |
|
1976
|
0 |
0 |
if (IS_NUM(ch)) { |
|
|
0 |
0 |
if (IS_NUM(ch)) { |
|
1995
|
0 |
0 |
if (buflen > UINT16_MAX) |
|
2000
|
0 |
0 |
s = found_at ? s_http_userinfo_start : s_http_host_start; |
|
2002
|
0 |
0 |
for (p = buf + u->field_data[UF_HOST].off; p < buf + buflen; p++) { |
|
2005
|
0 |
0 |
if (new_s == s_http_host_dead) { |
|
2011
|
0 |
0 |
if (s != s_http_host) { |
|
2018
|
0 |
0 |
if (s != s_http_host_v6) { |
|
2025
|
0 |
0 |
if (s != s_http_host_port) { |
|
2034
|
0 |
0 |
if (s != s_http_userinfo) { |
|
2049
|
0 |
0 |
switch (s) { |
|
2072
|
0 |
0 |
if (buflen > UINT16_MAX) |
|
2076
|
0 |
0 |
s = is_connect ? s_req_server_start : s_req_spaces_before_url; |
|
2079
|
0 |
0 |
for (p = buf; p < buf + buflen; p++) { |
|
2125
|
0 |
0 |
if (uf == old_uf) { |
|
2139
|
0 |
0 |
if ((u->field_set & ((1 << UF_SCHEMA) | (1 << UF_HOST))) != 0) { |
|
2140
|
0 |
0 |
if (http_parse_host(buf, u, found_at) != 0) { |
|
2146
|
0 |
0 |
if (is_connect && u->field_set != ((1 << UF_HOST)|(1 << UF_PORT))) { |
|
|
0 |
0 |
if (is_connect && u->field_set != ((1 << UF_HOST)|(1 << UF_PORT))) { |
|
2150
|
0 |
0 |
if (u->field_set & (1 << UF_PORT)) { |
|
2155
|
0 |
0 |
if (v > 0xffff) { |
|
2171
|
0 |
0 |
if (HTTP_PARSER_ERRNO(parser) == HPE_OK || |
|
|
0 |
0 |
if (HTTP_PARSER_ERRNO(parser) == HPE_OK || |
|
2173
|
0 |
0 |
SET_ERRNO((paused) ? HPE_PAUSED : HPE_OK); |