X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=loaders.c;h=cf4e59fc888e2d96770c7e81b4277994fa6f1f0c;hp=9f3433128e905786daa526f5f1f017a687e04932;hb=78f4b2c4afd022fea21e33c637214eaf74d27e27;hpb=1a14f999c1e810ffdf5c29fdbacb31161afd1b36 diff --git a/loaders.c b/loaders.c index 9f343312..cf4e59fc 100644 --- a/loaders.c +++ b/loaders.c @@ -1,4 +1,4 @@ -const char loaders_rcs[] = "$Id: loaders.c,v 1.14 2001/06/01 03:27:04 oes Exp $"; +const char loaders_rcs[] = "$Id: loaders.c,v 1.23 2001/07/20 15:51:54 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/loaders.c,v $ @@ -35,6 +35,39 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.14 2001/06/01 03:27:04 oes Exp $" * * Revisions : * $Log: loaders.c,v $ + * Revision 1.23 2001/07/20 15:51:54 oes + * Fixed indentation of prepocessor commands + * + * Revision 1.22 2001/07/20 15:16:17 haroon + * - per Guy's suggestion, added a while loop in sweep() to catch not just + * the last inactive CSP but all other consecutive inactive CSPs after that + * as well + * + * Revision 1.21 2001/07/18 17:26:24 oes + * Changed to conform to new pcrs interface + * + * Revision 1.20 2001/07/17 13:07:01 oes + * Fixed segv when last line in config files + * lacked a terminating (\r)\n + * + * Revision 1.19 2001/07/13 14:01:54 oes + * Removed all #ifdef PCRS + * + * Revision 1.18 2001/06/29 21:45:41 oes + * Indentation, CRLF->LF, Tab-> Space + * + * Revision 1.17 2001/06/29 13:31:51 oes + * Various adaptions + * + * Revision 1.16 2001/06/09 10:55:28 jongfoster + * Changing BUFSIZ ==> BUFFER_SIZE + * + * Revision 1.15 2001/06/07 23:14:14 jongfoster + * Removing ACL and forward file loaders - these + * files have been merged into the config file. + * Cosmetic: Moving unloader funcs next to their + * respective loader funcs + * * Revision 1.14 2001/06/01 03:27:04 oes * Fixed line continuation problem * @@ -152,11 +185,6 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.14 2001/06/01 03:27:04 oes Exp $" #include "gateway.h" #include "actions.h" -#ifndef SPLIT_PROXY_ARGS -/* For strsav */ -#include "showargs.h" -#endif /* ndef SPLIT_PROXY_ARGS */ - const char loaders_h_rcs[] = LOADERS_H_VERSION; /* Fix a problem with Solaris. There should be no effect on other @@ -174,13 +202,12 @@ const char loaders_h_rcs[] = LOADERS_H_VERSION; * These are also entered in the main linked list of files. */ -#ifdef TRUST_FILES +#ifdef FEATURE_TRUST static struct file_list *current_trustfile = NULL; -#endif /* def TRUST_FILES */ +#endif /* def FEATURE_TRUST */ -#ifdef PCRS static struct file_list *current_re_filterfile = NULL; -#endif /* def PCRS */ + /********************************************************************* @@ -236,49 +263,61 @@ void sweep(void) ncsp->actions_list->active = 1; } -#ifdef PCRS - if (ncsp->rlist) /* perl re files */ + if (ncsp->rlist) /* pcrsjob files */ { ncsp->rlist->active = 1; } -#endif /* def PCRS */ -#ifdef TRUST_FILES +#ifdef FEATURE_TRUST if (ncsp->tlist) /* trust files */ { ncsp->tlist->active = 1; } -#endif /* def TRUST_FILES */ +#endif /* def FEATURE_TRUST */ } else + /* + * this client is not active, release its resources + * and the ones of all inactive clients that might + * follow it + */ { - /* this client one is not active, release its resources */ - csp->next = ncsp->next; - - freez(ncsp->ip_addr_str); -#ifdef TRUST_FILES - freez(ncsp->referrer); -#endif /* def TRUST_FILES */ - freez(ncsp->x_forwarded); - freez(ncsp->iob->buf); - - free_http_request(ncsp->http); - - destroy_list(ncsp->headers); - destroy_list(ncsp->cookie_list); - - free_current_action(ncsp->action); - -#ifdef STATISTICS - urls_read++; - if (ncsp->rejected) + while( !ncsp->active ) { - urls_rejected++; + csp->next = ncsp->next; + + freez(ncsp->ip_addr_str); + freez(ncsp->my_ip_addr_str); + freez(ncsp->my_hostname); + +#ifdef FEATURE_TRUST + freez(ncsp->referrer); +#endif /* def FEATURE_TRUST */ + freez(ncsp->x_forwarded); + freez(ncsp->iob->buf); + + free_http_request(ncsp->http); + + destroy_list(ncsp->headers); + destroy_list(ncsp->cookie_list); + + free_current_action(ncsp->action); + +#ifdef FEATURE_STATISTICS + urls_read++; + if (ncsp->rejected) + { + urls_rejected++; + } +#endif /* def FEATURE_STATISTICS */ + + freez(ncsp); + + /* are there any more in sequence after it? */ + if( !(ncsp = csp->next) ) + break; } -#endif /* def STATISTICS */ - - freez(ncsp); } } @@ -290,10 +329,6 @@ void sweep(void) (nfl->unloader)(nfl->f); -#ifndef SPLIT_PROXY_ARGS - freez(nfl->proxy_args); -#endif /* ndef SPLIT_PROXY_ARGS */ - freez(nfl->filename); freez(nfl); @@ -359,7 +394,7 @@ int create_url_spec(struct url_spec * url, char * buf) if (url->path) { int errcode; - char rebuf[BUFSIZ]; + char rebuf[BUFFER_SIZE]; if (NULL == (url->preg = zalloc(sizeof(*url->preg)))) { @@ -374,14 +409,13 @@ int create_url_spec(struct url_spec * url, char * buf) (REG_EXTENDED|REG_NOSUB|REG_ICASE)); if (errcode) { - size_t errlen = - regerror(errcode, - url->preg, buf, sizeof(buf)); + size_t errlen = regerror(errcode, + url->preg, buf, sizeof(buf)); buf[errlen] = '\0'; log_error(LOG_LEVEL_ERROR, "error compiling %s: %s", - url->spec, buf); + url->spec, buf); freez(url->spec); freez(url->path); @@ -420,6 +454,7 @@ int create_url_spec(struct url_spec * url, char * buf) url->unanchored = tmp_url->unanchored; return 0; /* OK */ + } @@ -475,10 +510,7 @@ void free_url(struct url_spec *url) * This will be set to NULL, OR a struct * file_list newly allocated on the * heap, with the filename and lastmodified - * fields filled, standard header giving file - * name in proxy_args, and all others zeroed. - * (proxy_args is only filled in if !defined - * SPLIT_PROXY_ARGS and !suppress_blocklists). + * fields filled, and all others zeroed. * * Returns : If file unchanged: 0 (and sets newfl == NULL) * If file changed: 1 and sets newfl != NULL @@ -525,24 +557,10 @@ int check_file_changed(const struct file_list * current, return 1; } -#ifndef SPLIT_PROXY_ARGS - if (!suppress_blocklists) - { - char * p = html_encode(filename); - if (p) - { - fs->proxy_args = strsav(fs->proxy_args, "

The file `"); - fs->proxy_args = strsav(fs->proxy_args, p); - fs->proxy_args = strsav(fs->proxy_args, - "' contains the following patterns

\n"); - freez(p); - } - fs->proxy_args = strsav(fs->proxy_args, "
");
-   }
-#endif /* ndef SPLIT_PROXY_ARGS */
 
    *newfl = fs;
    return 1;
+
 }
 
 
@@ -569,31 +587,22 @@ int check_file_changed(const struct file_list * current,
 char *read_config_line(char *buf, int buflen, FILE *fp, struct file_list *fs)
 {
    char *p, *q;
-   char linebuf[BUFSIZ];
+   char linebuf[BUFFER_SIZE];
    int contflag = 0;
 
    *buf = '\0';
 
    while (fgets(linebuf, sizeof(linebuf), fp))
    {
-#ifndef SPLIT_PROXY_ARGS
-      if (fs && !suppress_blocklists)
-      {
-         char *html_line = html_encode(linebuf);
-         if (html_line != NULL)
-         {
-            fs->proxy_args = strsav(fs->proxy_args, html_line);
-            freez(html_line);
-         }
-         fs->proxy_args = strsav(fs->proxy_args, "
"); - } -#endif /* ndef SPLIT_PROXY_ARGS */ - /* Trim off newline */ if ((p = strpbrk(linebuf, "\r\n")) != NULL) { *p = '\0'; } + else + { + p = linebuf + strlen(linebuf); + } /* Line continuation? Trim escape and set flag. */ if ((p != linebuf) && (*--p == '\\')) @@ -628,7 +637,7 @@ char *read_config_line(char *buf, int buflen, FILE *fp, struct file_list *fs) if (contflag) { contflag = 0; - continue; + continue; } /* Remove leading and trailing whitespace */ @@ -646,7 +655,7 @@ char *read_config_line(char *buf, int buflen, FILE *fp, struct file_list *fs) } -#ifdef TRUST_FILES +#ifdef FEATURE_TRUST /********************************************************************* * * Function : unload_trustfile @@ -664,7 +673,7 @@ static void unload_trustfile(void *f) struct block_spec *b = (struct block_spec *)f; if (b == NULL) return; - unload_trustfile(b->next); + unload_trustfile(b->next); /* Stack is cheap, isn't it? */ free_url(b->url); @@ -692,7 +701,7 @@ int load_trustfile(struct client_state *csp) struct block_spec *b, *bl; struct url_spec **tl; - char buf[BUFSIZ], *p, *q; + char buf[BUFFER_SIZE], *p, *q; int reject, trusted; struct file_list *fs; @@ -784,13 +793,6 @@ int load_trustfile(struct client_state *csp) fclose(fp); -#ifndef SPLIT_PROXY_ARGS - if (!suppress_blocklists) - { - fs->proxy_args = strsav(fs->proxy_args, "
"); - } -#endif /* ndef SPLIT_PROXY_ARGS */ - /* the old one is now obsolete */ if (current_trustfile) { @@ -814,10 +816,9 @@ load_trustfile_error: return(-1); } -#endif /* def TRUST_FILES */ +#endif /* def FEATURE_TRUST */ -#ifdef PCRS /********************************************************************* * * Function : unload_re_filterfile @@ -832,18 +833,15 @@ load_trustfile_error: *********************************************************************/ static void unload_re_filterfile(void *f) { - pcrs_job *joblist; struct re_filterfile_spec *b = (struct re_filterfile_spec *)f; if (b == NULL) return; destroy_list(b->patterns); - - joblist = b->joblist; - while ( NULL != (joblist = pcrs_free_job(joblist)) ) {} - + pcrs_free_joblist(b->joblist); freez(b); + return; } /********************************************************************* @@ -867,7 +865,7 @@ int load_re_filterfile(struct client_state *csp) struct re_filterfile_spec *bl; struct file_list *fs; - char buf[BUFSIZ]; + char buf[BUFFER_SIZE]; int error; pcrs_job *dummy; @@ -903,7 +901,7 @@ int load_re_filterfile(struct client_state *csp) enlist( bl->patterns, buf ); /* We have a meaningful line -> make it a job */ - if ((dummy = pcrs_make_job(buf, &error)) == NULL) + if ((dummy = pcrs_compile_command(buf, &error)) == NULL) { log_error(LOG_LEVEL_RE_FILTER, "Adding re_filter job %s failed with error %d.", buf, error); @@ -919,13 +917,6 @@ int load_re_filterfile(struct client_state *csp) fclose(fp); -#ifndef SPLIT_PROXY_ARGS - if (!suppress_blocklists) - { - fs->proxy_args = strsav(fs->proxy_args, ""); - } -#endif /* ndef SPLIT_PROXY_ARGS */ - /* the old one is now obsolete */ if ( NULL != current_re_filterfile ) { @@ -949,7 +940,6 @@ load_re_filterfile_error: return(-1); } -#endif /* def PCRS */ /*********************************************************************