X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=filters.c;h=219c58184f414a3c83e4128c1c8c98deef27a5f3;hb=f2a8b1b41f4d2d4f98b2208f9c00d46d7a953982;hp=5ef0ff1de3b6688f8511fd124d159d242c344df8;hpb=e72b401da5537a14b29e945944926373cb251825;p=privoxy.git diff --git a/filters.c b/filters.c index 5ef0ff1d..219c5818 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.124 2009/08/19 15:24:30 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); @@ -687,7 +689,9 @@ struct http_response *block_url(struct client_state *csp) } #endif /* Preceeding code is disabled for now */ } - else if(csp->action->flags & ACTION_HANDLE_AS_EMPTY_DOCUMENT) + else +#endif /* def FEATURE_IMAGE_BLOCKING */ + if(csp->action->flags & ACTION_HANDLE_AS_EMPTY_DOCUMENT) { /* * Send empty document. @@ -715,7 +719,6 @@ struct http_response *block_url(struct client_state *csp) } } else -#endif /* def FEATURE_IMAGE_BLOCKING */ /* * Else, generate an HTML "blocked" message: @@ -1769,6 +1772,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? */