|
|
@ -2350,6 +2350,7 @@ static int send_recv_auth(stratum_instance_t *client) |
|
|
|
sdata_t *sdata = ckp->data; |
|
|
|
sdata_t *sdata = ckp->data; |
|
|
|
char *buf = NULL, *json_msg; |
|
|
|
char *buf = NULL, *json_msg; |
|
|
|
bool contended = false; |
|
|
|
bool contended = false; |
|
|
|
|
|
|
|
size_t responselen = 0; |
|
|
|
char cdfield[64]; |
|
|
|
char cdfield[64]; |
|
|
|
int ret = 1; |
|
|
|
int ret = 1; |
|
|
|
json_t *val; |
|
|
|
json_t *val; |
|
|
@ -2389,15 +2390,16 @@ static int send_recv_auth(stratum_instance_t *client) |
|
|
|
contended = true; |
|
|
|
contended = true; |
|
|
|
|
|
|
|
|
|
|
|
free(json_msg); |
|
|
|
free(json_msg); |
|
|
|
if (likely(buf)) { |
|
|
|
/* Leave ample room for response based on buf length */ |
|
|
|
|
|
|
|
if (likely(buf)) |
|
|
|
|
|
|
|
responselen = strlen(buf); |
|
|
|
|
|
|
|
if (likely(responselen > 0)) { |
|
|
|
char *cmd = NULL, *secondaryuserid = NULL, *response; |
|
|
|
char *cmd = NULL, *secondaryuserid = NULL, *response; |
|
|
|
worker_instance_t *worker = client->worker_instance; |
|
|
|
worker_instance_t *worker = client->worker_instance; |
|
|
|
json_error_t err_val; |
|
|
|
json_error_t err_val; |
|
|
|
size_t responselen; |
|
|
|
|
|
|
|
json_t *val = NULL; |
|
|
|
json_t *val = NULL; |
|
|
|
|
|
|
|
|
|
|
|
LOGINFO("Got ckdb response: %s", buf); |
|
|
|
LOGINFO("Got ckdb response: %s", buf); |
|
|
|
responselen = strlen(buf); /* Leave ample room for response based on buf length */ |
|
|
|
|
|
|
|
response = alloca(responselen); |
|
|
|
response = alloca(responselen); |
|
|
|
memset(response, 0, responselen); |
|
|
|
memset(response, 0, responselen); |
|
|
|
if (unlikely(sscanf(buf, "id.%*d.%s", response) < 1 || strlen(response) < 1 || !strchr(response, '='))) { |
|
|
|
if (unlikely(sscanf(buf, "id.%*d.%s", response) < 1 || strlen(response) < 1 || !strchr(response, '='))) { |
|
|
@ -3782,6 +3784,7 @@ static bool test_and_clear(bool *val, mutex_t *lock) |
|
|
|
static void ckdbq_process(ckpool_t *ckp, char *msg) |
|
|
|
static void ckdbq_process(ckpool_t *ckp, char *msg) |
|
|
|
{ |
|
|
|
{ |
|
|
|
sdata_t *sdata = ckp->data; |
|
|
|
sdata_t *sdata = ckp->data; |
|
|
|
|
|
|
|
size_t responselen = 0; |
|
|
|
char *buf = NULL; |
|
|
|
char *buf = NULL; |
|
|
|
|
|
|
|
|
|
|
|
while (!buf) { |
|
|
|
while (!buf) { |
|
|
@ -3801,9 +3804,12 @@ static void ckdbq_process(ckpool_t *ckp, char *msg) |
|
|
|
|
|
|
|
|
|
|
|
/* Process any requests from ckdb that are heartbeat responses with
|
|
|
|
/* Process any requests from ckdb that are heartbeat responses with
|
|
|
|
* specific requests. */ |
|
|
|
* specific requests. */ |
|
|
|
if (likely(buf)) { |
|
|
|
if (likely(buf)) |
|
|
|
char response[PAGESIZE] = {}; |
|
|
|
responselen = strlen(buf); |
|
|
|
|
|
|
|
if (likely(responselen > 0)) { |
|
|
|
|
|
|
|
char *response = alloca(responselen); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
memset(response, 0, responselen); |
|
|
|
sscanf(buf, "id.%*d.%s", response); |
|
|
|
sscanf(buf, "id.%*d.%s", response); |
|
|
|
if (safecmp(response, "ok")) { |
|
|
|
if (safecmp(response, "ok")) { |
|
|
|
char *cmd; |
|
|
|
char *cmd; |
|
|
|