MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / http_parser_execute

Function http_parser_execute

libs/qhttpserver/http-parser/http_parser.c:626–2084  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

624}
625
626size_t http_parser_execute (http_parser *parser,
627 const http_parser_settings *settings,
628 const char *data,
629 size_t len)
630{
631 char c, ch;
632 int8_t unhex_val;
633 const char *p = data;
634 const char *header_field_mark = 0;
635 const char *header_value_mark = 0;
636 const char *url_mark = 0;
637 const char *body_mark = 0;
638 const char *status_mark = 0;
639 enum state p_state = (enum state) parser->state;
640
641 /* We're in an error state. Don't bother doing anything. */
642 if (HTTP_PARSER_ERRNO(parser) != HPE_OK) {
643 return 0;
644 }
645
646 if (len == 0) {
647 switch (CURRENT_STATE()) {
648 case s_body_identity_eof:
649 /* Use of CALLBACK_NOTIFY() here would erroneously return 1 byte read if
650 * we got paused.
651 */
652 CALLBACK_NOTIFY_NOADVANCE(message_complete);
653 return 0;
654
655 case s_dead:
656 case s_start_req_or_res:
657 case s_start_res:
658 case s_start_req:
659 return 0;
660
661 default:
662 SET_ERRNO(HPE_INVALID_EOF_STATE);
663 return 1;
664 }
665 }
666
667
668 if (CURRENT_STATE() == s_header_field)
669 header_field_mark = data;
670 if (CURRENT_STATE() == s_header_value)
671 header_value_mark = data;
672 switch (CURRENT_STATE()) {
673 case s_req_path:
674 case s_req_schema:
675 case s_req_schema_slash:
676 case s_req_schema_slash_slash:
677 case s_req_server_start:
678 case s_req_server:
679 case s_req_server_with_at:
680 case s_req_query_string_start:
681 case s_req_query_string:
682 case s_req_fragment_start:
683 case s_req_fragment:

Callers 10

parseRequestMethod · 0.85
parseFunction · 0.85
parse_count_bodyFunction · 0.85
parse_pauseFunction · 0.85
test_header_nread_valueFunction · 0.85
benchFunction · 0.85
mainFunction · 0.85

Calls 2

parse_url_charFunction · 0.85
http_message_needs_eofFunction · 0.85

Tested by 7

parseFunction · 0.68
parse_count_bodyFunction · 0.68
parse_pauseFunction · 0.68
test_header_nread_valueFunction · 0.68