projects
/
privoxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bump copyright
[privoxy.git]
/
filters.c
diff --git
a/filters.c
b/filters.c
index
54bd06d
..
4231d2d
100644
(file)
--- a/
filters.c
+++ b/
filters.c
@@
-1,4
+1,4
@@
-const char filters_rcs[] = "$Id: filters.c,v 1.18
1 2014/06/02 06:19:05
fabiankeil Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.18
6 2014/06/12 13:09:03
fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/filters.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/filters.c,v $
@@
-1238,11
+1238,14
@@
struct http_response *redirect_url(struct client_state *csp)
* properly formatted URL and use it for the redirection
* directly.
*
* properly formatted URL and use it for the redirection
* directly.
*
- * According to
RFC 2616 section 14.30 the URL
- * has to be absolute and if the user tries:
- * +redirect{s
hit
/this/will/be/parsed/as/pcrs_command.html}
+ * According to
(the now obsolete) RFC 2616 section 14.30
+ *
the URL
has to be absolute and if the user tries:
+ * +redirect{s
adly
/this/will/be/parsed/as/pcrs_command.html}
* she would get undefined results anyway.
*
* she would get undefined results anyway.
*
+ * RFC 7231 7.1.2 actually allows relative references,
+ * but those start with a leading slash (RFC 3986 4.2) and
+ * thus can't be mistaken for pcrs commands either.
*/
if (*redirection_string == 's')
*/
if (*redirection_string == 's')
@@
-2046,7
+2049,7
@@
static filter_function_ptr get_filter_function(const struct client_state *csp)
{
filter_function = pcrs_filter_response;
}
{
filter_function = pcrs_filter_response;
}
- else if ((csp->content_type & CT_GIF)
&&
+ else if ((csp->content_type & CT_GIF) &&
(csp->action->flags & ACTION_DEANIMATE))
{
filter_function = gif_deanimate_response;
(csp->action->flags & ACTION_DEANIMATE))
{
filter_function = gif_deanimate_response;
@@
-2061,7
+2064,8
@@
static filter_function_ptr get_filter_function(const struct client_state *csp)
* Function : remove_chunked_transfer_coding
*
* Description : In-situ remove the "chunked" transfer coding as defined
* Function : remove_chunked_transfer_coding
*
* Description : In-situ remove the "chunked" transfer coding as defined
- * in rfc2616 from a buffer.
+ * in RFC 7230 4.1 from a buffer. XXX: The implementation
+ * is neither complete nor compliant (TODO #129).
*
* Parameters :
* 1 : buffer = Pointer to the text buffer
*
* Parameters :
* 1 : buffer = Pointer to the text buffer
@@
-2252,7
+2256,9
@@
char *execute_content_filters(struct client_state *csp)
content = (content_filter != NULL) ? (*content_filter)(csp) : NULL;
#ifdef FEATURE_EXTERNAL_FILTERS
content = (content_filter != NULL) ? (*content_filter)(csp) : NULL;
#ifdef FEATURE_EXTERNAL_FILTERS
- if (!list_is_empty(csp->action->multi[ACTION_MULTI_EXTERNAL_FILTER]))
+ if ((csp->content_type & CT_TEXT) &&
+ (csp->rlist != NULL) &&
+ !list_is_empty(csp->action->multi[ACTION_MULTI_EXTERNAL_FILTER]))
{
struct list_entry *filtername;
size_t size = (size_t)csp->content_length;
{
struct list_entry *filtername;
size_t size = (size_t)csp->content_length;
@@
-2373,7
+2379,7
@@
void apply_url_actions(struct current_action_spec *action,
* Invalid syntax is fatal.
*
*********************************************************************/
* Invalid syntax is fatal.
*
*********************************************************************/
-
const static
struct forward_spec *get_forward_override_settings(struct client_state *csp)
+
static const
struct forward_spec *get_forward_override_settings(struct client_state *csp)
{
const char *forward_override_line = csp->action->string[ACTION_STRING_FORWARD_OVERRIDE];
char forward_settings[BUFFER_SIZE];
{
const char *forward_override_line = csp->action->string[ACTION_STRING_FORWARD_OVERRIDE];
char forward_settings[BUFFER_SIZE];
@@
-2654,7
+2660,8
@@
int content_requires_filtering(struct client_state *csp)
*/
if ((csp->content_type & CT_TEXT) &&
(csp->rlist != NULL) &&
*/
if ((csp->content_type & CT_TEXT) &&
(csp->rlist != NULL) &&
- (!list_is_empty(csp->action->multi[ACTION_MULTI_FILTER])))
+ (!list_is_empty(csp->action->multi[ACTION_MULTI_FILTER]) ||
+ !list_is_empty(csp->action->multi[ACTION_MULTI_EXTERNAL_FILTER])))
{
return TRUE;
}
{
return TRUE;
}
@@
-2664,7
+2671,7
@@
int content_requires_filtering(struct client_state *csp)
return TRUE;
}
return TRUE;
}
- return
(!list_is_empty(csp->action->multi[ACTION_MULTI_EXTERNAL_FILTER]))
;
+ return
FALSE
;
}
}