diff --git a/src/generator.c b/src/generator.c index 443d5635..340b67e0 100644 --- a/src/generator.c +++ b/src/generator.c @@ -659,6 +659,7 @@ retry: if (parent_proxy(proxi)) { /* Set the number of clients per proxy on the parent proxy */ proxi->clients_per_proxy = 1ll << ((size - 3) * 8); + proxi->client_headroom = proxi->clients_per_proxy; LOGNOTICE("Proxy %d:%s clients per proxy: %"PRId64, proxi->id, proxi->si->url, proxi->clients_per_proxy); } @@ -1046,10 +1047,6 @@ static void send_diff(ckpool_t *ckp, proxy_instance_t *proxi) json_t *json_msg; char *msg, *buf; - /* Master proxy, we don't use this for work */ - if (parent_proxy(proxi)) - return; - /* Not set yet */ if (!proxi->diff) return; @@ -1074,10 +1071,6 @@ static void send_notify(ckpool_t *ckp, proxy_instance_t *proxi) char *msg, *buf; int i; - /* Master proxy, we don't use this for work */ - if (parent_proxy(proxi)) - return; - merkle_arr = json_array(); mutex_lock(&proxy->notify_lock); @@ -1285,10 +1278,6 @@ static void send_subscribe(ckpool_t *ckp, proxy_instance_t *proxi) json_t *json_msg; char *msg, *buf; - /* Master proxy, we don't use this for work */ - if (parent_proxy(proxi)) - return; - JSON_CPACK(json_msg, "{sisisssi}", "proxy", proxi->proxy->id, "subproxy", proxi->id, @@ -1476,10 +1465,6 @@ static void *proxy_send(void *arg) "id", json_object_dup(msg->json_msg, "id"), "method", "mining.submit"); ret = send_json_msg(cs, val); - if (unlikely(!ret && !subproxy->disabled)) { - LOGWARNING("Proxy %d:%d dead, disabling", proxy->id, subid); - disable_subproxy(gdata, proxy, subproxy); - } json_decref(val); } else { LOGNOTICE("Proxy %d:%s failed to find matching jobid in proxysend", @@ -1492,6 +1477,8 @@ static void *proxy_send(void *arg) LOGWARNING("Proxy %d:%s failed to send msg in proxy_send, dropping to reconnect", proxy->id, proxy->si->url); Close(cs->fd); + if (!parent_proxy && !subproxy->disabled) + disable_subproxy(gdata, proxy, subproxy); } } return NULL; @@ -1841,6 +1828,7 @@ static void prepare_proxy(proxy_instance_t *proxi) { proxi->proxy = proxi; mutex_init(&proxi->proxy_lock); + add_subproxy(proxi, proxi); mutex_init(&proxi->psend_lock); cond_init(&proxi->psend_cond); create_pthread(&proxi->pth_psend, proxy_send, proxi);