X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=jcc.c;h=8ab7f872e03d02b86d52137f3b4e5390910481ac;hp=edda17d54c59ecab096098b5ef9f0f06d195d640;hb=60523aeb81032f680bc2d568fb710203dec0a454;hpb=f27efbd7d2d8ccad11e6fc4ef30db26db0d4a948 diff --git a/jcc.c b/jcc.c index edda17d5..8ab7f872 100644 --- a/jcc.c +++ b/jcc.c @@ -1,4 +1,4 @@ -const char jcc_rcs[] = "$Id: jcc.c,v 1.438 2016/01/16 12:30:43 fabiankeil Exp $"; +const char jcc_rcs[] = "$Id: jcc.c,v 1.441 2016/02/26 12:29:38 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jcc.c,v $ @@ -6,7 +6,7 @@ const char jcc_rcs[] = "$Id: jcc.c,v 1.438 2016/01/16 12:30:43 fabiankeil Exp $" * Purpose : Main file. Contains main() method, main loop, and * the main connection-handling function. * - * Copyright : Written by and Copyright (C) 2001-2014 the + * Copyright : Written by and Copyright (C) 2001-2016 the * Privoxy team. http://www.privoxy.org/ * * Based on the Internet Junkbuster originally written @@ -115,6 +115,9 @@ const char jcc_rcs[] = "$Id: jcc.c,v 1.438 2016/01/16 12:30:43 fabiankeil Exp $" #include "cgi.h" #include "loadcfg.h" #include "urlmatch.h" +#ifdef FEATURE_CLIENT_TAGS +#include "client-tags.h" +#endif const char jcc_h_rcs[] = JCC_H_VERSION; const char project_h_rcs[] = PROJECT_H_VERSION; @@ -185,6 +188,9 @@ privoxy_mutex_t connection_reuse_mutex; #ifdef FEATURE_EXTERNAL_FILTERS privoxy_mutex_t external_filter_mutex; #endif +#ifdef FEATURE_CLIENT_TAGS +privoxy_mutex_t client_tags_mutex; +#endif #if !defined(HAVE_GETHOSTBYADDR_R) || !defined(HAVE_GETHOSTBYNAME_R) privoxy_mutex_t resolver_mutex; @@ -1842,6 +1848,9 @@ static void chat(struct client_state *csp) http = csp->http; +#if FEATURE_CLIENT_TAGS + get_tag_list_for_client(csp->client_tags, csp->ip_addr_str); +#endif if (receive_client_request(csp) != JB_ERR_OK) { return; @@ -2813,6 +2822,9 @@ static void prepare_csp_for_next_request(struct client_state *csp) free_http_request(csp->http); destroy_list(csp->headers); destroy_list(csp->tags); +#ifdef FEATURE_CLIENT_TAGS + destroy_list(csp->client_tags); +#endif free_current_action(csp->action); if (NULL != csp->fwd) { @@ -3246,6 +3258,9 @@ static void initialize_mutexes(void) #ifdef FEATURE_EXTERNAL_FILTERS privoxy_mutex_init(&external_filter_mutex); #endif +#ifdef FEATURE_CLIENT_TAGS + privoxy_mutex_init(&client_tags_mutex); +#endif /* * XXX: The assumptions below are a bit naive @@ -3966,13 +3981,7 @@ static void listen_loop(void) } #endif - csp_list = (struct client_states *)zalloc(sizeof(*csp_list)); - if (NULL == csp_list) - { - log_error(LOG_LEVEL_FATAL, - "malloc(%d) for csp_list failed: %E", sizeof(*csp_list)); - continue; - } + csp_list = zalloc_or_die(sizeof(*csp_list)); csp = &csp_list->csp; log_error(LOG_LEVEL_CONNECT,