projects
/
privoxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a +delay-response{} test
[privoxy.git]
/
parsers.c
diff --git
a/parsers.c
b/parsers.c
index
6f58c10
..
37a647c
100644
(file)
--- a/
parsers.c
+++ b/
parsers.c
@@
-4,7
+4,7
@@
*
* Purpose : Declares functions to parse/crunch headers and pages.
*
*
* Purpose : Declares functions to parse/crunch headers and pages.
*
- * Copyright : Written by and Copyright (C) 2001-20
17
the
+ * Copyright : Written by and Copyright (C) 2001-20
20
the
* Privoxy team. https://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
* 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");
if (bufsize >= csp->config->buffer_limit)
{
log_error(LOG_LEVEL_ERROR, "Buffer limit reached while decompressing iob");
+ freez(buf);
return JB_ERR_MEMORY;
}
return JB_ERR_MEMORY;
}
@@
-1207,7
+1208,7
@@
jb_err sed_https(struct client_state *csp)
struct list headers;
/*
struct list headers;
/*
- * Temporarly replace csp->headers with csp->https_headers
+ * Temporar
i
ly replace csp->headers with csp->https_headers
* to trick sed() into filtering the https headers.
*/
headers.first = csp->headers->first;
* 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;
/*
csp->headers->last = csp->https_headers->last;
/*
- * Start with fresh tags. Already exising tags may
+ * Start with fresh tags. Already exis
t
ing tags may
* be set again. This is necessary to overrule
* URL-based patterns.
*/
* 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
/*
* We want client header filters and taggers
- * so temporarly remove the flag.
+ * so temporar
i
ly 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;
*/
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;
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 ((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->ver
sion
, "HTTP/1.1"))
{
log_error(LOG_LEVEL_HEADER,
"Removing \'%s\' to imply keep-alive.", *header);
{
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
*
* Description : Remove the Content-Encoding header if the
* decompression was successful and the content
- * has been modifed.
+ * has been modif
i
ed.
*
* Parameters :
* 1 : csp = Current client state (buffers, headers, etc...)
*
* 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)
#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->ver
sion
, "HTTP/1.1"))
{
csp->flags |= CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE;
return JB_ERR_OK;
{
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, " ");
string_append(&http->cmd, http->url);
string_append(&http->cmd, " ");
- string_append(&http->cmd, http->ver);
+ string_append(&http->cmd, http->ver
sion
);
if (http->cmd == NULL)
{
return JB_ERR_MEMORY;
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, " ");
string_append(&http->cmd, http->url);
string_append(&http->cmd, " ");
- string_append(&http->cmd, http->ver);
+ string_append(&http->cmd, http->ver
sion
);
if (http->cmd == NULL)
{
return JB_ERR_MEMORY;
if (http->cmd == NULL)
{
return JB_ERR_MEMORY;