|
|
|
@ -3525,6 +3525,7 @@ static json_t *parse_subscribe(stratum_instance_t *client, const int64_t client_
|
|
|
|
|
{ |
|
|
|
|
ckpool_t *ckp = client->ckp; |
|
|
|
|
sdata_t *sdata, *ckp_sdata = ckp->data; |
|
|
|
|
int session_id = 0, userid = -1; |
|
|
|
|
bool old_match = false; |
|
|
|
|
char sessionid[12]; |
|
|
|
|
int arr_size; |
|
|
|
@ -3547,7 +3548,6 @@ static json_t *parse_subscribe(stratum_instance_t *client, const int64_t client_
|
|
|
|
|
/* NOTE useragent is NULL prior to this so should not be used in code
|
|
|
|
|
* till after this point */ |
|
|
|
|
if (arr_size > 0) { |
|
|
|
|
int session_id = 0; |
|
|
|
|
const char *buf; |
|
|
|
|
|
|
|
|
|
buf = json_string_value(json_array_get(params_val, 0)); |
|
|
|
@ -3571,26 +3571,26 @@ static json_t *parse_subscribe(stratum_instance_t *client, const int64_t client_
|
|
|
|
|
__fill_enonce1data(sdata->current_workbase, client); |
|
|
|
|
ck_runlock(&ckp_sdata->workbase_lock); |
|
|
|
|
} |
|
|
|
|
} else if (ckp->proxy) { |
|
|
|
|
int userid; |
|
|
|
|
|
|
|
|
|
/* Use the session_id to tell us which user this was.
|
|
|
|
|
* If it's not available, see if there's an IP address |
|
|
|
|
* which matches a recently disconnected session. */ |
|
|
|
|
if (session_id) |
|
|
|
|
userid = userid_from_sessionid(ckp_sdata, session_id); |
|
|
|
|
if (userid == -1) |
|
|
|
|
userid = userid_from_sessionip(ckp_sdata, client->address); |
|
|
|
|
if (userid != -1) { |
|
|
|
|
sdata_t *user_sdata = select_sdata(ckp, ckp_sdata, userid); |
|
|
|
|
|
|
|
|
|
if (user_sdata) |
|
|
|
|
sdata = user_sdata; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else |
|
|
|
|
client->useragent = ckzalloc(1); |
|
|
|
|
|
|
|
|
|
if (ckp->proxy) { |
|
|
|
|
/* Use the session_id to tell us which user this was.
|
|
|
|
|
* If it's not available, see if there's an IP address |
|
|
|
|
* which matches a recently disconnected session. */ |
|
|
|
|
if (session_id) |
|
|
|
|
userid = userid_from_sessionid(ckp_sdata, session_id); |
|
|
|
|
if (userid == -1) |
|
|
|
|
userid = userid_from_sessionip(ckp_sdata, client->address); |
|
|
|
|
if (userid != -1) { |
|
|
|
|
sdata_t *user_sdata = select_sdata(ckp, ckp_sdata, userid); |
|
|
|
|
|
|
|
|
|
if (user_sdata) |
|
|
|
|
sdata = user_sdata; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
client->sdata = sdata; |
|
|
|
|
if (ckp->proxy) { |
|
|
|
|
LOGINFO("Current %d, selecting proxy %d:%d for client %"PRId64, ckp_sdata->proxy->id, |
|
|
|
|