Browse Source

Merge branch 'master' into usb-dev

nfactor-troky
Con Kolivas 12 years ago
parent
commit
5abcf06bbe
  1. 2
      cgminer.c
  2. 43
      util.c

2
cgminer.c

@ -6061,7 +6061,7 @@ static void *watchpool_thread(void __maybe_unused *userdata)
/* Makes sure the hashmeter keeps going even if mining threads stall, updates /* 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 * the screen at regular intervals, and restarts threads if they appear to have
* died. */ * died. */
#define WATCHDOG_INTERVAL 3 #define WATCHDOG_INTERVAL 2
#define WATCHDOG_SICK_TIME 60 #define WATCHDOG_SICK_TIME 60
#define WATCHDOG_DEAD_TIME 600 #define WATCHDOG_DEAD_TIME 600
#define WATCHDOG_SICK_COUNT (WATCHDOG_SICK_TIME/WATCHDOG_INTERVAL) #define WATCHDOG_SICK_COUNT (WATCHDOG_SICK_TIME/WATCHDOG_INTERVAL)

43
util.c

@ -1,5 +1,5 @@
/* /*
* Copyright 2011-2012 Con Kolivas * Copyright 2011-2013 Con Kolivas
* Copyright 2010 Jeff Garzik * Copyright 2010 Jeff Garzik
* *
* This program is free software; you can redistribute it and/or modify it * 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; 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) bool initiate_stratum(struct pool *pool)
{ {
char s[RBUFSIZE], *sret = NULL, *nonce1, *sessionid; char s[RBUFSIZE], *sret = NULL, *nonce1, *sessionid;
@ -1462,9 +1490,12 @@ bool initiate_stratum(struct pool *pool)
goto out; goto out;
resend: resend:
if (pool->sessionid) if (!recvd) {
sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": [\"%s\"]}", swork_id++, pool->sessionid); if (pool->sessionid)
else 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++); sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": []}", swork_id++);
if (!__stratum_send(pool, s, strlen(s))) { if (!__stratum_send(pool, s, strlen(s))) {
@ -1509,7 +1540,7 @@ resend:
goto out; goto out;
} }
sessionid = json_array_string(json_array_get(res_val, 0), 1); sessionid = get_sessionid(res_val);
if (!sessionid) if (!sessionid)
applog(LOG_DEBUG, "Failed to get sessionid in initiate_stratum"); applog(LOG_DEBUG, "Failed to get sessionid in initiate_stratum");
nonce1 = json_array_string(res_val, 1); nonce1 = json_array_string(res_val, 1);
@ -1551,7 +1582,7 @@ out:
pool->pool_no, pool->nonce1, pool->n2size); pool->pool_no, pool->nonce1, pool->n2size);
} }
} else { } else {
if (recvd && pool->sessionid) { if (recvd) {
/* Reset the sessionid used for stratum resuming in case the pool /* Reset the sessionid used for stratum resuming in case the pool
* does not support it, or does not know how to respond to the * does not support it, or does not know how to respond to the
* presence of the sessionid parameter. */ * presence of the sessionid parameter. */

Loading…
Cancel
Save