From: Stephan Bosch Date: Sat, 4 Feb 2017 13:11:36 +0000 (+0100) Subject: lib-http: message parser: Delay allocation of message header. X-Git-Tag: 2.3.0.rc1~2102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b04dfad6b03e3809ccbca7f504ba44c6ab7dfad5;p=thirdparty%2Fdovecot%2Fcore.git lib-http: message parser: Delay allocation of message header. --- diff --git a/src/lib-http/http-message-parser.c b/src/lib-http/http-message-parser.c index 416a5b8d2d..94694fda4c 100644 --- a/src/lib-http/http-message-parser.c +++ b/src/lib-http/http-message-parser.c @@ -61,7 +61,6 @@ void http_message_parser_restart(struct http_message_parser *parser, pool_ref(pool); } parser->msg.date = (time_t)-1; - parser->msg.header = http_header_create(parser->msg.pool, 32); } int http_message_parse_version(struct http_message_parser *parser) @@ -132,6 +131,8 @@ http_message_parse_header(struct http_message_parser *parser, const struct http_header_field *hdr; struct http_parser hparser; + if (parser->msg.header == NULL) + parser->msg.header = http_header_create(parser->msg.pool, 32); hdr = http_header_field_add(parser->msg.header, name, data, size); /* RFC 7230, Section 3.2.2: Field Order @@ -356,6 +357,10 @@ int http_message_parse_headers(struct http_message_parser *parser) if (field_name == NULL) { /* EOH */ + /* Create empty header if there is none */ + if (parser->msg.header == NULL) + parser->msg.header = http_header_create(parser->msg.pool, 1); + /* handle HTTP/1.0 persistence */ if (msg->version_major == 1 && msg->version_minor == 0 && !msg->connection_close) {