Mercurial > dovecot > core-2.2
changeset 19744:2ca3b2969ad8
lib-http: request parser: Added support for explicitly finishing payload of previous request.
author | Stephan Bosch <stephan@rename-it.nl> |
---|---|
date | Wed, 10 Feb 2016 22:17:07 +0100 |
parents | 26c805d628f8 |
children | b445fef19092 |
files | src/lib-http/http-request-parser.c src/lib-http/http-request-parser.h |
diffstat | 2 files changed, 26 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-http/http-request-parser.c Wed Feb 10 22:15:12 2016 -0700 +++ b/src/lib-http/http-request-parser.c Wed Feb 10 22:17:07 2016 +0100 @@ -333,7 +333,8 @@ return HTTP_REQUEST_PARSE_ERROR_BROKEN_REQUEST; } -bool http_request_parser_pending_payload(struct http_request_parser *parser) +bool http_request_parser_pending_payload( + struct http_request_parser *parser) { if (parser->parser.payload == NULL) return FALSE; @@ -480,12 +481,11 @@ return 0; } -int http_request_parse_next(struct http_request_parser *parser, - pool_t pool, struct http_request *request, - enum http_request_parse_error *error_code_r, const char **error_r) +int http_request_parse_finish_payload( + struct http_request_parser *parser, + enum http_request_parse_error *error_code_r, + const char **error_r) { - const struct http_header_field *hdr; - const char *error; int ret; *error_code_r = parser->error_code = HTTP_REQUEST_PARSE_ERROR_NONE; @@ -498,8 +498,22 @@ *error_code_r = http_request_parser_message_error(parser); *error_r = parser->parser.error; } + } + return ret; +} + +int http_request_parse_next(struct http_request_parser *parser, + pool_t pool, struct http_request *request, + enum http_request_parse_error *error_code_r, const char **error_r) +{ + const struct http_header_field *hdr; + const char *error; + int ret; + + /* initialize and get rid of any payload of previous request */ + if ((ret=http_request_parse_finish_payload + (parser, error_code_r, error_r)) <= 0) return ret; - } /* RFC 7230, Section 3:
--- a/src/lib-http/http-request-parser.h Wed Feb 10 22:15:12 2016 -0700 +++ b/src/lib-http/http-request-parser.h Wed Feb 10 22:17:07 2016 +0100 @@ -22,6 +22,11 @@ const struct http_request_limits *limits) ATTR_NULL(2); void http_request_parser_deinit(struct http_request_parser **_parser); +int http_request_parse_finish_payload( + struct http_request_parser *parser, + enum http_request_parse_error *error_code_r, + const char **error_r); + int http_request_parse_next(struct http_request_parser *parser, pool_t pool, struct http_request *request, enum http_request_parse_error *error_code_r, const char **error_r);