diff --git a/daemon/call.c b/daemon/call.c index 17d5132bf..2e6b8687d 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -643,8 +643,6 @@ struct callmaster *callmaster_new(struct poller *p) { //c->totalstats_interval.managed_sess_max = 0; mutex_init(&c->totalstats_lastinterval_lock); - mutex_init(&c->cngs_lock); - c->cngs_hash = g_hash_table_new(g_sockaddr_hash, g_sockaddr_eq); return c; diff --git a/daemon/call.h b/daemon/call.h index 05b7e4afe..a552a7035 100644 --- a/daemon/call.h +++ b/daemon/call.h @@ -424,10 +424,6 @@ struct callmaster { mutex_t totalstats_lastinterval_lock; struct totalstats totalstats_lastinterval; - /* control_ng_stats stuff */ - mutex_t cngs_lock; - GHashTable *cngs_hash; - struct poller *poller; pcre *info_re; pcre_extra *info_ree; diff --git a/daemon/cli.c b/daemon/cli.c index 91047f67a..4c282c380 100644 --- a/daemon/cli.c +++ b/daemon/cli.c @@ -227,8 +227,8 @@ static void cli_incoming_list_totals(str *instr, struct callmaster* m, struct st streambuf_printf(replybuffer, " %20s | %10s | %10s | %10s | %10s | %10s | %10s | %10s | %10s | %10s \n", "Proxy", "Offer", "Answer", "Delete", "Ping", "List", "Query", "StartRec", "StopRec", "Errors"); - mutex_lock(&m->cngs_lock); - GList *list = g_hash_table_get_values(m->cngs_hash); + mutex_lock(&rtpe_cngs_lock); + GList *list = g_hash_table_get_values(rtpe_cngs_hash); if (!list) { streambuf_printf(replybuffer, "\n No proxies have yet tried to send data."); @@ -248,7 +248,7 @@ static void cli_incoming_list_totals(str *instr, struct callmaster* m, struct st cur->errors); } streambuf_printf(replybuffer, "\n\n"); - mutex_unlock(&m->cngs_lock); + mutex_unlock(&rtpe_cngs_lock); g_list_free(list); } diff --git a/daemon/control_ng.c b/daemon/control_ng.c index 8b1b48ef0..b8ccc8f6a 100644 --- a/daemon/control_ng.c +++ b/daemon/control_ng.c @@ -16,6 +16,10 @@ #include "log_funcs.h" +mutex_t rtpe_cngs_lock; +GHashTable *rtpe_cngs_hash; + + static void timeval_update_request_time(struct request_time *request, const struct timeval *offer_diff) { // lock offers @@ -88,18 +92,17 @@ static void pretty_print(bencode_item_t *el, GString *s) { } struct control_ng_stats* get_control_ng_stats(struct control_ng* c, const sockaddr_t *addr) { - struct callmaster *m = c->callmaster; struct control_ng_stats* cur; - mutex_lock(&m->cngs_lock); - cur = g_hash_table_lookup(m->cngs_hash, addr); + mutex_lock(&rtpe_cngs_lock); + cur = g_hash_table_lookup(rtpe_cngs_hash, addr); if (!cur) { cur = g_slice_alloc0(sizeof(struct control_ng_stats)); cur->proxy = *addr; ilog(LOG_DEBUG,"Adding a proxy for control ng stats:%s", sockaddr_print_buf(addr)); - g_hash_table_insert(m->cngs_hash, &cur->proxy, cur); + g_hash_table_insert(rtpe_cngs_hash, &cur->proxy, cur); } - mutex_unlock(&m->cngs_lock); + mutex_unlock(&rtpe_cngs_lock); return cur; } @@ -334,3 +337,9 @@ fail2: return NULL; } + + +void control_ng_init() { + mutex_init(&rtpe_cngs_lock); + rtpe_cngs_hash = g_hash_table_new(g_sockaddr_hash, g_sockaddr_eq); +} diff --git a/daemon/control_ng.h b/daemon/control_ng.h index 9851fdae7..8f22bb58c 100644 --- a/daemon/control_ng.h +++ b/daemon/control_ng.h @@ -31,5 +31,9 @@ struct control_ng { }; struct control_ng *control_ng_new(struct poller *, endpoint_t *, struct callmaster *, unsigned char); +void control_ng_init(void); + +extern mutex_t rtpe_cngs_lock; +extern GHashTable *rtpe_cngs_hash; #endif diff --git a/daemon/main.c b/daemon/main.c index b90e70b83..03bfa822c 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -492,6 +492,7 @@ static void init_everything() { crypto_init_main(); interfaces_init(&interfaces); iptables_init(); + control_ng_init(); }