X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=parsers.c;h=37a647c39903c61931f83f75ed3df6662633b693;hp=6f58c109b07463c6dc76e2a5ad228a037a17ca32;hb=c8a60271a255479e2d5f3e29be0837798e57c846;hpb=c1978963dc28395123e8a2755ed49359a98e96d9 diff --git a/parsers.c b/parsers.c index 6f58c109..37a647c3 100644 --- a/parsers.c +++ b/parsers.c @@ -4,7 +4,7 @@ * * Purpose : Declares functions to parse/crunch headers and pages. * - * Copyright : Written by and Copyright (C) 2001-2017 the + * Copyright : Written by and Copyright (C) 2001-2020 the * Privoxy team. https://www.privoxy.org/ * * Based on the Internet Junkbuster originally written @@ -633,6 +633,7 @@ jb_err decompress_iob(struct client_state *csp) if (bufsize >= csp->config->buffer_limit) { log_error(LOG_LEVEL_ERROR, "Buffer limit reached while decompressing iob"); + freez(buf); return JB_ERR_MEMORY; } @@ -1207,7 +1208,7 @@ jb_err sed_https(struct client_state *csp) struct list headers; /* - * Temporarly replace csp->headers with csp->https_headers + * Temporarily replace csp->headers with csp->https_headers * to trick sed() into filtering the https headers. */ headers.first = csp->headers->first; @@ -1216,7 +1217,7 @@ jb_err sed_https(struct client_state *csp) csp->headers->last = csp->https_headers->last; /* - * Start with fresh tags. Already exising tags may + * Start with fresh tags. Already existing tags may * be set again. This is necessary to overrule * URL-based patterns. */ @@ -1224,12 +1225,18 @@ jb_err sed_https(struct client_state *csp) /* * We want client header filters and taggers - * so temporarly remove the flag. + * so temporarily remove the flag. */ csp->flags &= ~CSP_FLAG_CLIENT_HEADER_PARSING_DONE; err = sed(csp, FILTER_CLIENT_HEADERS); csp->flags |= CSP_FLAG_CLIENT_HEADER_PARSING_DONE; + /* + * Update the last header which may have changed + * due to header additions, + */ + csp->https_headers->last = csp->headers->last; + csp->headers->first = headers.first; csp->headers->last = headers.last; @@ -1951,7 +1958,7 @@ static jb_err client_connection(struct client_state *csp, char **header) if ((csp->config->feature_flags & RUNTIME_FEATURE_CONNECTION_SHARING) && !(csp->flags & CSP_FLAG_SERVER_SOCKET_TAINTED)) { - if (!strcmpic(csp->http->ver, "HTTP/1.1")) + if (!strcmpic(csp->http->version, "HTTP/1.1")) { log_error(LOG_LEVEL_HEADER, "Removing \'%s\' to imply keep-alive.", *header); @@ -2452,7 +2459,7 @@ static jb_err server_content_encoding(struct client_state *csp, char **header) * * Description : Remove the Content-Encoding header if the * decompression was successful and the content - * has been modifed. + * has been modified. * * Parameters : * 1 : csp = Current client state (buffers, headers, etc...) @@ -3892,7 +3899,7 @@ static jb_err client_connection_header_adder(struct client_state *csp) #ifdef FEATURE_CONNECTION_KEEP_ALIVE if ((csp->config->feature_flags & RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE) && !(csp->flags & CSP_FLAG_SERVER_SOCKET_TAINTED) - && !strcmpic(csp->http->ver, "HTTP/1.1")) + && !strcmpic(csp->http->version, "HTTP/1.1")) { csp->flags |= CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE; return JB_ERR_OK; @@ -4534,7 +4541,7 @@ jb_err get_destination_from_headers(const struct list *headers, struct http_requ string_append(&http->cmd, " "); string_append(&http->cmd, http->url); string_append(&http->cmd, " "); - string_append(&http->cmd, http->ver); + string_append(&http->cmd, http->version); if (http->cmd == NULL) { return JB_ERR_MEMORY; @@ -4615,7 +4622,7 @@ jb_err get_destination_from_https_headers(const struct list *headers, struct htt string_append(&http->cmd, " "); string_append(&http->cmd, http->url); string_append(&http->cmd, " "); - string_append(&http->cmd, http->ver); + string_append(&http->cmd, http->version); if (http->cmd == NULL) { return JB_ERR_MEMORY;