Browse Source

Extract and store various parameters on stratum init confirming successful mining notify.

nfactor-troky
Con Kolivas 12 years ago
parent
commit
e3f1b02e9a
  1. 4
      miner.h
  2. 39
      util.c

4
miner.h

@ -812,8 +812,12 @@ struct pool { @@ -812,8 +812,12 @@ struct pool {
struct cgminer_stats cgminer_stats;
struct cgminer_pool_stats cgminer_pool_stats;
/* Stratum variables */
SOCKETTYPE sock;
struct sockaddr_in *server, client;
char *subscription;
char *nonce1;
int nonce2;
};
#define GETWORK_MODE_TESTPOOL 'T'

39
util.c

@ -865,9 +865,9 @@ static bool sock_send(int sock, char *s, ssize_t len) @@ -865,9 +865,9 @@ static bool sock_send(int sock, char *s, ssize_t len)
bool initiate_stratum(struct pool *pool)
{
json_t *val, *res_val, *err_val;
json_t *val, *res_val, *err_val, *notify_val;
char *s, *buf, *sret = NULL;
struct timeval timeout;
char *s, *sret = NULL;
json_error_t err;
bool ret = false;
ssize_t len;
@ -938,10 +938,43 @@ bool initiate_stratum(struct pool *pool) @@ -938,10 +938,43 @@ bool initiate_stratum(struct pool *pool)
goto out;
}
notify_val = json_array_get(res_val, 0);
if (!notify_val || json_is_null(notify_val)) {
applog(LOG_WARNING, "Failed to parse notify_val in initiate_stratum");
goto out;
}
buf = (char *)json_string_value(json_array_get(notify_val, 0));
if (!buf || strcasecmp(buf, "mining.notify")) {
applog(LOG_WARNING, "Failed to get mining notify in initiate_stratum");
goto out;
}
pool->subscription = (char *)json_string_value(json_array_get(notify_val, 1));
if (!pool->subscription) {
applog(LOG_WARNING, "Failed to get a subscription in initiate_stratum");
goto out;
}
pool->nonce1 = (char *)json_string_value(json_array_get(res_val, 1));
if (!pool->nonce1) {
applog(LOG_WARNING, "Failed to get nonce1 in initiate_stratum");
goto out;
}
pool->nonce2 = json_integer_value(json_array_get(res_val, 2));
if (!pool->nonce2) {
applog(LOG_WARNING, "Failed to get nonce2 in initiate_stratum");
goto out;
}
ret = true;
out:
if (!ret)
if (!ret) {
CLOSESOCKET(pool->sock);
if (val)
json_decref(val);
} else if (opt_protocol)
applog(LOG_DEBUG, "Pool %d confirmed mining.notify with subscription %s extranonce1 %s extranonce2 %d",
pool->pool_no, pool->subscription, pool->nonce1, pool->nonce2);
return ret;
}

Loading…
Cancel
Save