X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=filters.c;h=878c825312cc77367d5cb8cdc81438ff2525987f;hb=48c3349cf8ef334a30f9ceb535f64b0ee140a4e6;hp=5ef0ff1de3b6688f8511fd124d159d242c344df8;hpb=e72b401da5537a14b29e945944926373cb251825;p=privoxy.git diff --git a/filters.c b/filters.c index 5ef0ff1d..878c8253 100644 --- a/filters.c +++ b/filters.c @@ -1,4 +1,4 @@ -const char filters_rcs[] = "$Id: filters.c,v 1.120 2009/04/17 11:45:19 fabiankeil Exp $"; +const char filters_rcs[] = "$Id: filters.c,v 1.123 2009/06/19 15:50:53 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/filters.c,v $ @@ -13,7 +13,7 @@ const char filters_rcs[] = "$Id: filters.c,v 1.120 2009/04/17 11:45:19 fabiankei * `execute_single_pcrs_command', `rewrite_url', * `get_last_url' * - * Copyright : Written by and Copyright (C) 2001, 2004-2008 the SourceForge + * Copyright : Written by and Copyright (C) 2001, 2004-2009 the * Privoxy team. http://www.privoxy.org/ * * Based on the Internet Junkbuster originally written @@ -119,8 +119,9 @@ static jb_err prepare_for_filtering(struct client_state *csp); * Returns : 0 = no errror; -1 otherwise. * *********************************************************************/ -int sockaddr_storage_to_ip(const struct sockaddr_storage *addr, uint8_t **ip, - unsigned int *len, in_port_t **port) +static int sockaddr_storage_to_ip(const struct sockaddr_storage *addr, + uint8_t **ip, unsigned int *len, + in_port_t **port) { if (NULL == addr) { @@ -183,9 +184,9 @@ int sockaddr_storage_to_ip(const struct sockaddr_storage *addr, uint8_t **ip, * Returns : 0 = doesn't match; 1 = does match * *********************************************************************/ -int match_sockaddr(const struct sockaddr_storage *network, - const struct sockaddr_storage *netmask, - const struct sockaddr_storage *address) +static int match_sockaddr(const struct sockaddr_storage *network, + const struct sockaddr_storage *netmask, + const struct sockaddr_storage *address) { uint8_t *network_addr, *netmask_addr, *address_addr; unsigned int addr_len; @@ -418,14 +419,15 @@ int acl_addr(const char *aspec, struct access_control_addr *aca) hints.ai_socktype = SOCK_STREAM; i = getaddrinfo(acl_spec, ((p) ? ++p : NULL), &hints, &result); - freez(acl_spec); if (i != 0) { log_error(LOG_LEVEL_ERROR, "Can not resolve [%s]:%s: %s", acl_spec, p, gai_strerror(i)); + freez(acl_spec); return(-1); } + freez(acl_spec); /* TODO: Allow multihomed hostnames */ memcpy(&(aca->addr), result->ai_addr, result->ai_addrlen); @@ -1769,6 +1771,12 @@ filter_function_ptr get_filter_function(struct client_state *csp) { filter_function_ptr filter_function = NULL; + if ((csp->content_type & CT_TABOO) + && !(csp->action->flags & ACTION_FORCE_TEXT_MODE)) + { + return NULL; + } + /* * Are we enabling text mode by force? */