Browse Source

Make node passthrough clients inherit their passthrough node latency

master
ckolivas 9 years ago
parent
commit
e800f104ee
  1. 23
      src/stratifier.c

23
src/stratifier.c

@ -2435,6 +2435,12 @@ static stratum_instance_t *__recruit_stratum_instance(sdata_t *sdata)
return client; return client;
} }
/* passthrough subclients have client_ids in the high bits */
static inline bool passthrough_subclient(const int64_t client_id)
{
return (client_id > 0xffffffffll);
}
/* Enter with write instance_lock held */ /* Enter with write instance_lock held */
static stratum_instance_t *__stratum_add_instance(ckpool_t *ckp, const int64_t id, static stratum_instance_t *__stratum_add_instance(ckpool_t *ckp, const int64_t id,
const char *address, int server) const char *address, int server)
@ -2458,6 +2464,17 @@ static stratum_instance_t *__stratum_add_instance(ckpool_t *ckp, const int64_t i
/* Points to ckp sdata in ckpool mode, but is changed later in proxy /* Points to ckp sdata in ckpool mode, but is changed later in proxy
* mode . */ * mode . */
client->sdata = sdata; client->sdata = sdata;
if (passthrough_subclient(id)) {
stratum_instance_t *passthrough;
int64_t pass_id = id >> 32;
passthrough = __instance_by_id(sdata, pass_id);
if (passthrough && passthrough->node) {
client->latency = passthrough->latency;
LOGINFO("Client %"PRId64" inherited node latency of %d",
id, client->latency);
}
}
return client; return client;
} }
@ -2501,12 +2518,6 @@ static void connector_test_client(ckpool_t *ckp, const int64_t id)
send_proc(ckp->connector, buf); send_proc(ckp->connector, buf);
} }
/* passthrough subclients have client_ids in the high bits */
static inline bool passthrough_subclient(const int64_t client_id)
{
return (client_id > 0xffffffffll);
}
/* For creating a list of sends without locking that can then be concatenated /* For creating a list of sends without locking that can then be concatenated
* to the stratum_sends list. Minimises locking and avoids taking recursive * to the stratum_sends list. Minimises locking and avoids taking recursive
* locks. Sends only to sdata bound clients (everyone in ckpool) */ * locks. Sends only to sdata bound clients (everyone in ckpool) */

Loading…
Cancel
Save