X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=filters.c;h=6138758fb0fd58dd5872006e348ceaebd82ade61;hp=a28fbd893de4c86d1f3e585bf787c87a557dd8df;hb=278b8bf5b0d1250132773bd10ffbca07c067b845;hpb=e36a8a5be156dc1f147e4c8f2a79c1c6e999c66b diff --git a/filters.c b/filters.c index a28fbd89..6138758f 100644 --- a/filters.c +++ b/filters.c @@ -1,4 +1,4 @@ -const char filters_rcs[] = "$Id: filters.c,v 1.93 2007/09/29 10:21:16 fabiankeil Exp $"; +const char filters_rcs[] = "$Id: filters.c,v 1.95 2007/10/17 19:31:20 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/filters.c,v $ @@ -40,6 +40,13 @@ const char filters_rcs[] = "$Id: filters.c,v 1.93 2007/09/29 10:21:16 fabiankeil * * Revisions : * $Log: filters.c,v $ + * Revision 1.95 2007/10/17 19:31:20 fabiankeil + * Omitting the zero chunk that ends the chunk transfer encoding seems + * to be the new black. Log the problem and continue filtering anyway. + * + * Revision 1.94 2007/09/29 13:20:20 fabiankeil + * Remove two redundant and one useless log messages. + * * Revision 1.93 2007/09/29 10:21:16 fabiankeil * - Move get_filter_function() from jcc.c to filters.c * so the filter functions can be static. @@ -2182,8 +2189,8 @@ static jb_err remove_chunked_transfer_coding(char *buffer, size_t *size) if (sscanf(from_p, "%x", &chunksize) != 1) { - log_error(LOG_LEVEL_ERROR, "Parse error while stripping \"chunked\" transfer coding"); - return JB_ERR_PARSE; + log_error(LOG_LEVEL_INFO, "Invalid \"chunked\" transfer encoding detected and ignored."); + break; } } @@ -2301,7 +2308,6 @@ char *execute_content_filter(struct client_state *csp, filter_function_ptr conte { /* * failed to de-chunk or decompress. - * XXX: if possible, we should continue anyway. */ return NULL; } @@ -2644,6 +2650,26 @@ struct http_response *direct_response(struct client_state *csp) } +/********************************************************************* + * + * Function : content_filters_enabled + * + * Description : Checks whether there are any content filters + * enabled for the current request. + * + * Parameters : + * 1 : csp = Current client state (buffers, headers, etc...) + * + * Returns : TRUE for yes, FALSE otherwise + * + *********************************************************************/ +inline int content_filters_enabled(const struct client_state *csp) +{ + return (((csp->rlist != NULL) && + (!list_is_empty(csp->action->multi[ACTION_MULTI_FILTER]))) || + (csp->action->flags & (ACTION_DEANIMATE|ACTION_JPEG_INSPECT|ACTION_NO_POPUPS))); +} + /* Local Variables: tab-width: 3