-const char filters_rcs[] = "$Id: filters.c,v 1.132 2010/09/14 07:14:56 fabiankeil Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.139 2011/03/03 14:46:37 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/filters.c,v $
#include <string.h>
#include <assert.h>
-#ifdef HAVE_RFC2553
-#include <netdb.h>
-#include <sys/socket.h>
-#endif /* def HAVE_RFC2553 */
-
#ifndef _WIN32
#ifndef __OS2__
#include <unistd.h>
#define ijb_isdigit(__X) isdigit((int)(unsigned char)(__X))
typedef char *(*filter_function_ptr)();
-static filter_function_ptr get_filter_function(struct client_state *csp);
+static filter_function_ptr get_filter_function(const struct client_state *csp);
static jb_err remove_chunked_transfer_coding(char *buffer, size_t *size);
static jb_err prepare_for_filtering(struct client_state *csp);
{
return(0);
}
+ else
+ {
+ return(1);
+ }
}
else if (
#ifdef HAVE_RFC2553
&& !strstr(p, "compatible") /* MSIE */
&& !strstr(p, "Opera")) /* and Opera. */
{
- rsp->status = strdup("200 Request for blocked URL");
+ rsp->status = strdup("200 Request blocked by Privoxy");
}
else
{
- rsp->status = strdup("403 Request for blocked URL");
+ rsp->status = strdup("403 Request blocked by Privoxy");
}
if (rsp->status == NULL)
dummy = pcrs_compile_dynamic_command(pattern->str, variables, &error);
if (NULL == dummy)
{
- assert(error < 0);
log_error(LOG_LEVEL_ERROR,
- "Adding filter job \'%s\' to dynamic filter %s failed: %s",
- pattern->str, b->name, pcrs_strerror(error));
+ "Adding filter job \'%s\' to dynamic filter %s failed: %d %s",
+ pattern->str, b->name, error, pcrs_strerror(error));
continue;
}
else
* NULL if no content filter is active
*
*********************************************************************/
-static filter_function_ptr get_filter_function(struct client_state *csp)
+static filter_function_ptr get_filter_function(const struct client_state *csp)
{
filter_function_ptr filter_function = NULL;
- if ((csp->content_type & CT_TABOO)
- && !(csp->action->flags & ACTION_FORCE_TEXT_MODE))
- {
- return NULL;
- }
-
- /*
- * Are we enabling text mode by force?
- */
- if (csp->action->flags & ACTION_FORCE_TEXT_MODE)
- {
- /*
- * Do we really have to?
- */
- if (csp->content_type & CT_TEXT)
- {
- log_error(LOG_LEVEL_HEADER, "Text mode is already enabled.");
- }
- else
- {
- csp->content_type |= CT_TEXT;
- log_error(LOG_LEVEL_HEADER, "Text mode enabled by force. Take cover!");
- }
- }
-
- if (!(csp->content_type & CT_DECLARED))
- {
- /*
- * The server didn't bother to declare a MIME-Type.
- * Assume it's text that can be filtered.
- *
- * This also regulary happens with 304 responses,
- * therefore logging anything here would cause
- * too much noise.
- */
- csp->content_type |= CT_TEXT;
- }
-
/*
* Choose the applying filter function based on
* the content type and action settings.
if ((newsize += chunksize) >= *size)
{
+ /*
+ * XXX: The message is a bit confusing. Isn't the real problem that
+ * the specified chunk size is greater than the number of bytes
+ * left in the buffer? This probably means the connection got
+ * closed prematurely. To be investigated after 3.0.17 is out.
+ */
log_error(LOG_LEVEL_ERROR,
- "Chunk size %d exceeds buffer size %d in \"chunked\" transfer coding",
+ "Chunk size %d exceeds buffer size %d in \"chunked\" transfer coding",
chunksize, *size);
return JB_ERR_PARSE;
}