X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=loaders.c;h=f63b9168a9cb7ca04e89eeabc9e27ab957fb2337;hb=f4bbadd2be5d6c0077fa2243f73852de70e3af25;hp=17cfd157c80d9243d134d77c61f4f4eaf17708d8;hpb=d022ae1f6356fe426c054f133d37e3192dc00219;p=privoxy.git diff --git a/loaders.c b/loaders.c index 17cfd157..f63b9168 100644 --- a/loaders.c +++ b/loaders.c @@ -1,4 +1,4 @@ -const char loaders_rcs[] = "$Id: loaders.c,v 1.42 2002/03/13 00:27:05 jongfoster Exp $"; +const char loaders_rcs[] = "$Id: loaders.c,v 1.46 2002/03/24 13:25:43 swa Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/loaders.c,v $ @@ -9,7 +9,7 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.42 2002/03/13 00:27:05 jongfoster * unload files that are no longer in use. * * Copyright : Written by and Copyright (C) 2001 the SourceForge - * IJBSWA team. http://ijbswa.sourceforge.net + * Privoxy team. http://www.privoxy.org/ * * Based on the Internet Junkbuster originally written * by and Copyright (C) 1997 Anonymous Coders and @@ -35,6 +35,22 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.42 2002/03/13 00:27:05 jongfoster * * Revisions : * $Log: loaders.c,v $ + * Revision 1.46 2002/03/24 13:25:43 swa + * name change related issues + * + * Revision 1.45 2002/03/16 23:54:06 jongfoster + * Adding graceful termination feature, to help look for memory leaks. + * If you enable this (which, by design, has to be done by hand + * editing config.h) and then go to http://i.j.b/die, then the program + * will exit cleanly after the *next* request. It should free all the + * memory that was used. + * + * Revision 1.44 2002/03/16 21:51:00 jongfoster + * Fixing free(NULL). + * + * Revision 1.43 2002/03/16 20:28:34 oes + * Added descriptions to the filters so users will know what they select in the cgi editor + * * Revision 1.42 2002/03/13 00:27:05 jongfoster * Killing warnings * @@ -845,9 +861,9 @@ jb_err edit_read_line(FILE *fp, * the caller cares about "raw" or just "data"). */ - free(raw); - free(prefix); - free(data); + freez(raw); + freez(prefix); + freez(data); return JB_ERR_FILE; } @@ -864,7 +880,7 @@ jb_err edit_read_line(FILE *fp, } else { - free(raw); + freez(raw); } if (prefix_out) { @@ -872,7 +888,7 @@ jb_err edit_read_line(FILE *fp, } else { - free(prefix); + freez(prefix); } if (data_out) { @@ -880,7 +896,7 @@ jb_err edit_read_line(FILE *fp, } else { - free(data); + freez(data); } return JB_ERR_OK; } @@ -945,18 +961,46 @@ char *read_config_line(char *buf, size_t buflen, FILE *fp, unsigned long *linenu *********************************************************************/ static void unload_trustfile(void *f) { - struct block_spec *b = (struct block_spec *)f; - if (b == NULL) return; + struct block_spec *cur = (struct block_spec *)f; + struct block_spec *next; - unload_trustfile(b->next); /* Stack is cheap, isn't it? */ + while (cur != NULL) + { + next = cur->next; - free_url_spec(b->url); + free_url_spec(cur->url); + free(cur); - freez(b); + cur = next; + } } +#ifdef FEATURE_GRACEFUL_TERMINATION +/********************************************************************* + * + * Function : unload_current_trust_file + * + * Description : Unloads current trust file - reset to state at + * beginning of program. + * + * Parameters : None + * + * Returns : N/A + * + *********************************************************************/ +void unload_current_trust_file(void) +{ + if (current_trustfile) + { + current_trustfile->unloader = unload_trustfile; + current_trustfile = NULL; + } +} +#endif /* FEATURE_GRACEFUL_TERMINATION */ + + /********************************************************************* * * Function : load_trustfile @@ -1130,6 +1174,30 @@ static void unload_re_filterfile(void *f) } +#ifdef FEATURE_GRACEFUL_TERMINATION +/********************************************************************* + * + * Function : unload_current_re_filterfile + * + * Description : Unloads current re_filter file - reset to state at + * beginning of program. + * + * Parameters : None + * + * Returns : N/A + * + *********************************************************************/ +void unload_current_re_filterfile(void) +{ + if (current_re_filterfile) + { + current_re_filterfile->unloader = unload_re_filterfile; + current_re_filterfile = NULL; + } +} +#endif + + /********************************************************************* * * Function : load_re_filterfile