X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=src%2Ffilters.c;h=814cf206b73d70cb2c7f7d45e77507a54d5d1485;hb=7080a82ad34bd1f81efb7219df775ccb18468303;hp=3c7265b3d51cab638dbc268655054d1cbd7a3e77;hpb=081875f98497e731fa16ae5c89697f1d3cec1976;p=privoxy.git diff --git a/src/filters.c b/src/filters.c index 3c7265b3..814cf206 100644 --- a/src/filters.c +++ b/src/filters.c @@ -1,7 +1,7 @@ -const char filters_rcs[] = "$Id: filters.c,v 2.1 2002/08/26 11:08:18 sarantis Exp $"; +const char filters_rcs[] = "$Id: filters.c,v 2.3 2002/12/28 03:58:19 david__schmidt Exp $"; /********************************************************************* * - * File : $Source: /cvsroot/ijbswa//current/src/filters.c,v $ + * File : $Source: /cvsroot/ijbswa/current/src/filters.c,v $ * * Purpose : Declares functions to parse/crunch headers and pages. * Functions declared include: @@ -38,6 +38,21 @@ const char filters_rcs[] = "$Id: filters.c,v 2.1 2002/08/26 11:08:18 sarantis Ex * * Revisions : * $Log: filters.c,v $ + * Revision 2.3 2002/12/28 03:58:19 david__schmidt + * Initial drop of dashboard instrumentation - enabled with + * --enable-activity-console + * + * Revision 2.2 2002/09/04 15:38:24 oes + * Synced with the stable branch: + * Revision 1.58.2.2 2002/08/01 17:18:28 oes + * Fixed BR 537651 / SR 579724 (MSIE image detect improper for IE/Mac) + * + * Revision 1.58.2.1 2002/07/26 15:18:53 oes + * - Bugfix: Executing a filters without jobs no longer results in + * turing off *all* filters. + * - Security fix: Malicious web servers can't cause a seg fault + * through bogus chunk sizes anymore + * * Revision 2.1 2002/08/26 11:08:18 sarantis * Fix typo. * @@ -440,7 +455,9 @@ const char filters_rcs[] = "$Id: filters.c,v 2.1 2002/08/26 11:08:18 sarantis Ex #include "list.h" #include "deanimate.h" #include "urlmatch.h" - +#ifdef FEATURE_ACTIVITY_CONSOLE +#include "stats.h" +#endif /* def FEATURE_ACTIVITY_CONSOLE */ #ifdef _WIN32 #include "win32.h" #endif @@ -506,6 +523,9 @@ int block_acl(struct access_control_addr *dst, struct client_state *csp) } else { +#ifdef FEATURE_ACTIVITY_CONSOLE + accumulate_stats(STATS_ACL_RESTRICT, 1); +#endif /* def FEATURE_ACTIVITY_CONSOLE */ return(1); } } @@ -724,6 +744,9 @@ struct http_response *block_url(struct client_state *csp) /* and handle accordingly: */ if ((p == NULL) || (0 == strcmpic(p, "pattern"))) { +#ifdef FEATURE_ACTIVITY_CONSOLE + accumulate_stats(STATS_IMAGE_BLOCK, 1); +#endif /* def FEATURE_ACTIVITY_CONSOLE */ rsp->body = bindup(image_pattern_data, image_pattern_length); if (rsp->body == NULL) { @@ -741,6 +764,9 @@ struct http_response *block_url(struct client_state *csp) else if (0 == strcmpic(p, "blank")) { +#ifdef FEATURE_ACTIVITY_CONSOLE + accumulate_stats(STATS_IMAGE_BLOCK, 1); +#endif /* def FEATURE_ACTIVITY_CONSOLE */ rsp->body = bindup(image_blank_data, image_blank_length); if (rsp->body == NULL) { @@ -1268,7 +1294,7 @@ char *pcrs_filter_response(struct client_state *csp) int hits=0; size_t size; - char *old = csp->iob->cur, *new = NULL; + char *old_buf = csp->iob->cur, *new_buf = NULL; pcrs_job *job; struct file_list *fl; @@ -1331,9 +1357,9 @@ char *pcrs_filter_response(struct client_state *csp) /* Apply all jobs from the joblist */ for (job = b->joblist; NULL != job; job = job->next) { - current_hits += pcrs_execute(job, old, size, &new, &size); - if (old != csp->iob->cur) free(old); - old=new; + current_hits += pcrs_execute(job, old_buf, size, &new_buf, &size); + if (old_buf != csp->iob->cur) free(old_buf); + old_buf=new_buf; } log_error(LOG_LEVEL_RE_FILTER, " ...produced %d hits (new size %d).", current_hits, size); @@ -1348,15 +1374,19 @@ char *pcrs_filter_response(struct client_state *csp) */ if (!hits) { - free(new); + free(new_buf); return(NULL); } +#ifdef FEATURE_ACTIVITY_CONSOLE + else + accumulate_stats(STATS_FILTER, hits); +#endif /* def FEATURE_ACTIVITY_CONSOLE */ csp->flags |= CSP_FLAG_MODIFIED; csp->content_length = size; IOB_RESET(csp); - return(new); + return(new_buf); } @@ -1422,6 +1452,9 @@ char *gif_deanimate_response(struct client_state *csp) } else { +#ifdef FEATURE_ACTIVITY_CONSOLE + accumulate_stats(STATS_GIF_DEANIMATE, 1); +#endif /* def FEATURE_ACTIVITY_CONSOLE */ log_error(LOG_LEVEL_DEANIMATE, "Success! GIF shrunk from %d bytes to %d.", size, out->offset); } csp->content_length = out->offset;