Browse Source

Highest client id may not be reliable enough to prevent duplicate ids

master
Con Kolivas 10 years ago
parent
commit
9341ffb640
  1. 9
      src/stratifier.c

9
src/stratifier.c

@ -319,7 +319,6 @@ struct stratifier_data {
ckmsgq_t *stxnq; // Transaction requests ckmsgq_t *stxnq; // Transaction requests
int64_t user_instance_id; int64_t user_instance_id;
int64_t highest_client_id; /* Highest known client id */
/* Stratum_instances hashlist is stored by id, whereas disconnected_instances /* Stratum_instances hashlist is stored by id, whereas disconnected_instances
* is sorted by enonce1_64. */ * is sorted by enonce1_64. */
@ -1178,10 +1177,6 @@ static bool __dropped_instance(sdata_t *sdata, const int64_t id)
stratum_instance_t *client, *tmp; stratum_instance_t *client, *tmp;
bool ret = false; bool ret = false;
/* Avoid iterating over all the instances if we haven't seen an id this high
* before as the value only ever increases */
if (id > sdata->highest_client_id)
goto out;
HASH_ITER(hh, sdata->disconnected_instances, client, tmp) { HASH_ITER(hh, sdata->disconnected_instances, client, tmp) {
if (unlikely(client->id == id)) { if (unlikely(client->id == id)) {
ret = true; ret = true;
@ -1268,8 +1263,6 @@ static stratum_instance_t *__stratum_add_instance(ckpool_t *ckp, const int64_t i
sdata->stratum_generated++; sdata->stratum_generated++;
client->id = id; client->id = id;
if (id > sdata->highest_client_id)
sdata->highest_client_id = id;
client->server = server; client->server = server;
client->diff = client->old_diff = ckp->startdiff; client->diff = client->old_diff = ckp->startdiff;
client->ckp = ckp; client->ckp = ckp;
@ -3455,7 +3448,7 @@ static void srecv_process(ckpool_t *ckp, char *buf)
if (unlikely(dropped)) { if (unlikely(dropped)) {
/* Client may be NULL here */ /* Client may be NULL here */
LOGNOTICE("Stratifier skipped dropped instance %ld message server %d", LOGNOTICE("Stratifier skipped dropped instance %ld message from server %d",
msg->client_id, server); msg->client_id, server);
free_smsg(msg); free_smsg(msg);
goto out; goto out;

Loading…
Cancel
Save