X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=loaders.c;h=10d08b818f02923c777481c91428069884a4dec0;hp=fe123aad160a1dcc0764f115a999bd26065ad699;hb=03a212cd9ff953a50904e7a970748b5661840426;hpb=90ea7f6b1ae23b022794bf78f8f9d000d7dcda4c diff --git a/loaders.c b/loaders.c index fe123aad..10d08b81 100644 --- a/loaders.c +++ b/loaders.c @@ -1,4 +1,4 @@ -const char loaders_rcs[] = "$Id: loaders.c,v 1.62 2007/04/30 15:02:18 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,27 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.62 2007/04/30 15:02:18 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. * @@ -494,12 +515,14 @@ 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); @@ -1314,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 /********************************************************************* @@ -1346,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. @@ -1359,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;