Browse Source

Reconnect clients whenever we detect a new notify from a subproxy of the current proxy

master
Con Kolivas 10 years ago
parent
commit
7009fb1077
  1. 12
      src/stratifier.c

12
src/stratifier.c

@ -281,7 +281,6 @@ struct stratum_instance {
proxy_t *proxy; /* Proxy this is bound to in proxy mode */ proxy_t *proxy; /* Proxy this is bound to in proxy mode */
int64_t proxyid; /* Which proxy id */ int64_t proxyid; /* Which proxy id */
int subproxyid; /* Which subproxy */ int subproxyid; /* Which subproxy */
int64_t notify_id; /* Which notify_id from the subproxy did we join */
}; };
struct share { struct share {
@ -1271,6 +1270,7 @@ static void update_subscribe(ckpool_t *ckp, const char *cmd)
} else } else
proxy = subproxy_by_id(sdata, id, subid); proxy = subproxy_by_id(sdata, id, subid);
dsdata = proxy->sdata; dsdata = proxy->sdata;
proxy->notify_id = -1; /* Reset this so we can detect its first notify */
ck_wlock(&dsdata->workbase_lock); ck_wlock(&dsdata->workbase_lock);
proxy->subscribed = true; proxy->subscribed = true;
@ -1412,8 +1412,14 @@ static void update_notify(ckpool_t *ckp, const char *cmd)
LOGNOTICE("Block hash on proxy %ld changed to %s", id, dsdata->lastswaphash); LOGNOTICE("Block hash on proxy %ld changed to %s", id, dsdata->lastswaphash);
} }
if (parent_proxy(proxy) && proxy == current_proxy(sdata)) /* Is this the first notify from this proxy? If so, we know we have
reconnect_clients(sdata); * more room and can reconnect clients if we're a subproxy of the
* current proxy. */
if (proxy->notify_id == -1) {
proxy->notify_id = wb->id;
if (proxy->parent == current_proxy(sdata))
reconnect_clients(sdata);
}
clean |= new_block; clean |= new_block;
LOGINFO("Proxy %ld:%d broadcast updated stratum notify with%s clean", id, LOGINFO("Proxy %ld:%d broadcast updated stratum notify with%s clean", id,
subid, clean ? "" : "out"); subid, clean ? "" : "out");

Loading…
Cancel
Save