mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-11 07:17:58 +00:00
Complete authorisation in stratum.
This commit is contained in:
parent
331026595f
commit
ac9a4378d1
27
util.c
27
util.c
@ -1105,7 +1105,7 @@ out:
|
|||||||
bool auth_stratum(struct pool *pool)
|
bool auth_stratum(struct pool *pool)
|
||||||
{
|
{
|
||||||
json_t *val = NULL, *res_val, *err_val;
|
json_t *val = NULL, *res_val, *err_val;
|
||||||
char *s, *buf, *sret = NULL;
|
char *s, *sret = NULL;
|
||||||
json_error_t err;
|
json_error_t err;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
@ -1113,6 +1113,7 @@ bool auth_stratum(struct pool *pool)
|
|||||||
sprintf(s, "{\"id\": %d, \"method\": \"mining.authorize\", \"params\": [\"%s\", \"%s\"]}",
|
sprintf(s, "{\"id\": %d, \"method\": \"mining.authorize\", \"params\": [\"%s\", \"%s\"]}",
|
||||||
pool->swork.id++, pool->rpc_user, pool->rpc_pass);
|
pool->swork.id++, pool->rpc_user, pool->rpc_pass);
|
||||||
|
|
||||||
|
/* Parse all data prior sending auth request */
|
||||||
while (sock_full(pool->sock, false)) {
|
while (sock_full(pool->sock, false)) {
|
||||||
sret = recv_line(pool->sock);
|
sret = recv_line(pool->sock);
|
||||||
parse_stratum(pool, sret);
|
parse_stratum(pool, sret);
|
||||||
@ -1122,10 +1123,34 @@ bool auth_stratum(struct pool *pool)
|
|||||||
if (!sock_send(pool->sock, s, strlen(s)))
|
if (!sock_send(pool->sock, s, strlen(s)))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
sret = recv_line(pool->sock);
|
||||||
|
if (!sret)
|
||||||
|
goto out;
|
||||||
|
val = JSON_LOADS(sret, &err);
|
||||||
|
free(sret);
|
||||||
|
res_val = json_object_get(val, "result");
|
||||||
|
err_val = json_object_get(val, "error");
|
||||||
|
|
||||||
|
if (!res_val || json_is_false(res_val) || (err_val && !json_is_null(err_val))) {
|
||||||
|
char *ss;
|
||||||
|
|
||||||
|
if (err_val)
|
||||||
|
ss = json_dumps(err_val, JSON_INDENT(3));
|
||||||
|
else
|
||||||
|
ss = strdup("(unknown reason)");
|
||||||
|
applog(LOG_WARNING, "JSON stratum auth failed: %s", ss);
|
||||||
|
free(ss);
|
||||||
|
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
applog(LOG_INFO, "Stratum authorisation success for pool %d", pool->pool_no);
|
||||||
out:
|
out:
|
||||||
if (val)
|
if (val)
|
||||||
json_decref(val);
|
json_decref(val);
|
||||||
|
|
||||||
|
pool->stratum_auth = ret;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user