Lines Matching refs:parser
8 int llhttp_message_needs_eof(const llhttp_t* parser);
9 int llhttp_should_keep_alive(const llhttp_t* parser);
11 int llhttp__before_headers_complete(llhttp_t* parser, const char* p,
14 if ((parser->flags & F_UPGRADE) &&
15 (parser->flags & F_CONNECTION_UPGRADE)) {
20 parser->upgrade =
21 (parser->type == HTTP_REQUEST || parser->status_code == 101);
23 parser->upgrade = (parser->method == HTTP_CONNECT);
37 int llhttp__after_headers_complete(llhttp_t* parser, const char* p,
41 hasBody = parser->flags & F_CHUNKED || parser->content_length > 0;
42 if (parser->upgrade && (parser->method == HTTP_CONNECT ||
43 (parser->flags & F_SKIPBODY) || !hasBody)) {
48 if (parser->flags & F_SKIPBODY) {
50 } else if (parser->flags & F_CHUNKED) {
53 } else if (parser->flags & F_TRANSFER_ENCODING) {
54 if (parser->type == HTTP_REQUEST &&
55 (parser->lenient_flags & LENIENT_CHUNKED_LENGTH) == 0 &&
56 (parser->lenient_flags & LENIENT_TRANSFER_ENCODING) == 0) {
77 if (!(parser->flags & F_CONTENT_LENGTH)) {
78 if (!llhttp_message_needs_eof(parser)) {
85 } else if (parser->content_length == 0) {
96 int llhttp__after_message_complete(llhttp_t* parser, const char* p,
100 should_keep_alive = llhttp_should_keep_alive(parser);
101 parser->finish = HTTP_FINISH_SAFE;
102 parser->flags = 0;
109 int llhttp_message_needs_eof(const llhttp_t* parser) {
110 if (parser->type == HTTP_REQUEST) {
115 if (parser->status_code / 100 == 1 || /* 1xx e.g. Continue */
116 parser->status_code == 204 || /* No Content */
117 parser->status_code == 304 || /* Not Modified */
118 (parser->flags & F_SKIPBODY)) { /* response to a HEAD request */
123 if ((parser->flags & F_TRANSFER_ENCODING) &&
124 (parser->flags & F_CHUNKED) == 0) {
128 if (parser->flags & (F_CHUNKED | F_CONTENT_LENGTH)) {
136 int llhttp_should_keep_alive(const llhttp_t* parser) {
137 if (parser->http_major > 0 && parser->http_minor > 0) {
139 if (parser->flags & F_CONNECTION_CLOSE) {
144 if (!(parser->flags & F_CONNECTION_KEEP_ALIVE)) {
149 return !llhttp_message_needs_eof(parser);