X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=loaders.c;h=10d08b818f02923c777481c91428069884a4dec0;hp=2ea9c5f8736be99a079d04e76999cb16a129a030;hb=9e02e023b95985efba498e6e42caaea5f73f6d10;hpb=fff4cf265d75e6d7d28e88a6fb1622fd904e095b diff --git a/loaders.c b/loaders.c index 2ea9c5f8..10d08b81 100644 --- a/loaders.c +++ b/loaders.c @@ -1,4 +1,4 @@ -const char loaders_rcs[] = "$Id: loaders.c,v 1.61 2007/04/15 16:39:21 fabiankeil Exp $"; +const char loaders_rcs[] = "$Id: loaders.c,v 1.68 2008/09/19 15:26:28 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/loaders.c,v $ @@ -35,6 +35,30 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.61 2007/04/15 16:39:21 fabiankeil * * Revisions : * $Log: loaders.c,v $ + * Revision 1.68 2008/09/19 15:26:28 fabiankeil + * Add change-x-forwarded-for{} action to block or add + * X-Forwarded-For headers. Mostly based on code removed + * before 3.0.7. + * + * Revision 1.67 2008/03/30 14:52:08 fabiankeil + * Rename load_actions_file() and load_re_filterfile() + * as they load multiple files "now". + * + * Revision 1.66 2008/03/21 11:16:30 fabiankeil + * Garbage-collect csp->my_ip_addr_str and csp->my_hostname. + * + * Revision 1.65 2007/12/07 18:29:23 fabiankeil + * Remove now-obsolete csp member x_forwarded. + * + * Revision 1.64 2007/06/01 14:12:38 fabiankeil + * Add unload_forward_spec() in preparation for forward-override{}. + * + * Revision 1.63 2007/05/14 10:41:15 fabiankeil + * Ditch the csp member cookie_list[] which isn't used anymore. + * + * Revision 1.62 2007/04/30 15:02:18 fabiankeil + * Introduce dynamic pcrs jobs that can resolve variables. + * * Revision 1.61 2007/04/15 16:39:21 fabiankeil * Introduce tags as alternative way to specify which * actions apply to a request. At the moment tags can be @@ -491,17 +515,18 @@ void sweep(void) last_active->next = csp->next; freez(csp->ip_addr_str); - freez(csp->my_ip_addr_str); - freez(csp->my_hostname); - freez(csp->x_forwarded); freez(csp->iob->buf); freez(csp->error_message); + if (csp->action->flags & ACTION_FORWARD_OVERRIDE && + NULL != csp->fwd) + { + unload_forward_spec(csp->fwd); + } free_http_request(csp->http); destroy_list(csp->headers); destroy_list(csp->tags); - destroy_list(csp->cookie_list); free_current_action(csp->action); @@ -1312,6 +1337,30 @@ static void unload_re_filterfile(void *f) return; } +/********************************************************************* + * + * Function : unload_forward_spec + * + * Description : Unload the forward spec settings by freeing all + * memory referenced by members and the memory for + * the spec itself. + * + * Parameters : + * 1 : fwd = the forward spec. + * + * Returns : N/A + * + *********************************************************************/ +void unload_forward_spec(struct forward_spec *fwd) +{ + free_url_spec(fwd->url); + freez(fwd->gateway_host); + freez(fwd->forward_host); + free(fwd); + + return; +} + #ifdef FEATURE_GRACEFUL_TERMINATION /********************************************************************* @@ -1344,9 +1393,9 @@ void unload_current_re_filterfile(void) /********************************************************************* * - * Function : load_re_filterfile + * Function : load_re_filterfiles * - * Description : Load the re_filterfile. + * Description : Loads all the filterfiles. * Generate a chained list of re_filterfile_spec's from * the "FILTER: " blocks, compiling all their substitutions * into chained lists of pcrs_job structs. @@ -1357,7 +1406,7 @@ void unload_current_re_filterfile(void) * Returns : 0 => Ok, everything else is an error. * *********************************************************************/ -int load_re_filterfile(struct client_state *csp) +int load_re_filterfiles(struct client_state *csp) { int i; int result;