mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-11 07:17:58 +00:00
Merge branch 'master' into usb-dev
This commit is contained in:
commit
5abcf06bbe
@ -6061,7 +6061,7 @@ static void *watchpool_thread(void __maybe_unused *userdata)
|
||||
/* Makes sure the hashmeter keeps going even if mining threads stall, updates
|
||||
* the screen at regular intervals, and restarts threads if they appear to have
|
||||
* died. */
|
||||
#define WATCHDOG_INTERVAL 3
|
||||
#define WATCHDOG_INTERVAL 2
|
||||
#define WATCHDOG_SICK_TIME 60
|
||||
#define WATCHDOG_DEAD_TIME 600
|
||||
#define WATCHDOG_SICK_COUNT (WATCHDOG_SICK_TIME/WATCHDOG_INTERVAL)
|
||||
|
39
util.c
39
util.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2011-2012 Con Kolivas
|
||||
* Copyright 2011-2013 Con Kolivas
|
||||
* Copyright 2010 Jeff Garzik
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
@ -1450,6 +1450,34 @@ static bool setup_stratum_curl(struct pool *pool)
|
||||
return true;
|
||||
}
|
||||
|
||||
static char *get_sessionid(json_t *val)
|
||||
{
|
||||
char *ret = NULL;
|
||||
json_t *arr_val;
|
||||
int arrsize, i;
|
||||
|
||||
arr_val = json_array_get(val, 0);
|
||||
if (!arr_val || !json_is_array(arr_val))
|
||||
goto out;
|
||||
arrsize = json_array_size(arr_val);
|
||||
for (i = 0; i < arrsize; i++) {
|
||||
json_t *arr = json_array_get(arr_val, i);
|
||||
char *notify;
|
||||
|
||||
if (!arr | !json_is_array(arr))
|
||||
break;
|
||||
notify = __json_array_string(arr, 0);
|
||||
if (!notify)
|
||||
continue;
|
||||
if (!strncasecmp(notify, "mining.notify", 13)) {
|
||||
ret = json_array_string(arr, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool initiate_stratum(struct pool *pool)
|
||||
{
|
||||
char s[RBUFSIZE], *sret = NULL, *nonce1, *sessionid;
|
||||
@ -1462,9 +1490,12 @@ bool initiate_stratum(struct pool *pool)
|
||||
goto out;
|
||||
|
||||
resend:
|
||||
if (!recvd) {
|
||||
if (pool->sessionid)
|
||||
sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": [\"%s\"]}", swork_id++, pool->sessionid);
|
||||
sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": [\""PACKAGE"/"VERSION"\", \"%s\"]}", swork_id++, pool->sessionid);
|
||||
else
|
||||
sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": [\""PACKAGE"/"VERSION"\"]}", swork_id++);
|
||||
} else
|
||||
sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": []}", swork_id++);
|
||||
|
||||
if (!__stratum_send(pool, s, strlen(s))) {
|
||||
@ -1509,7 +1540,7 @@ resend:
|
||||
goto out;
|
||||
}
|
||||
|
||||
sessionid = json_array_string(json_array_get(res_val, 0), 1);
|
||||
sessionid = get_sessionid(res_val);
|
||||
if (!sessionid)
|
||||
applog(LOG_DEBUG, "Failed to get sessionid in initiate_stratum");
|
||||
nonce1 = json_array_string(res_val, 1);
|
||||
@ -1551,7 +1582,7 @@ out:
|
||||
pool->pool_no, pool->nonce1, pool->n2size);
|
||||
}
|
||||
} else {
|
||||
if (recvd && pool->sessionid) {
|
||||
if (recvd) {
|
||||
/* Reset the sessionid used for stratum resuming in case the pool
|
||||
* does not support it, or does not know how to respond to the
|
||||
* presence of the sessionid parameter. */
|
||||
|
Loading…
Reference in New Issue
Block a user