diff --git a/pool/page_workers.php b/pool/page_workers.php index d8a55aed..2ef1828b 100644 --- a/pool/page_workers.php +++ b/pool/page_workers.php @@ -212,9 +212,9 @@ function worktotal($offset, $totshare, $totdiff, $totshrate, $totinvalid, $pg = ''; $totshrate = dsprate($totshrate); $totrate = dsprate($totrate); -# if ($instances >= 0) -# $dspinst = " ($instances miners)"; -# else + if ($instances >= 0) + $dspinst = " ($instances miners)"; + else $dspinst = ''; if (($offset % 2) == 0) diff --git a/src/bitcoin.c b/src/bitcoin.c index e16a9f1c..7f9b5f23 100644 --- a/src/bitcoin.c +++ b/src/bitcoin.c @@ -405,7 +405,7 @@ retry: } goto out; } - if (!json_is_true(res_val)) { + if (!json_is_null(res_val)) { res_ret = json_string_value(res_val); if (res_ret && strlen(res_ret)) { LOGWARNING("SUBMIT BLOCK RETURNED: %s", res_ret); diff --git a/src/ckdb.h b/src/ckdb.h index 19151f90..c5985945 100644 --- a/src/ckdb.h +++ b/src/ckdb.h @@ -51,7 +51,7 @@ #define DB_VLOCK "1" #define DB_VERSION "1.0.4" -#define CKDB_VERSION DB_VERSION"-1.920" +#define CKDB_VERSION DB_VERSION"-1.921" #define WHERE_FFL " - from %s %s() line %d" #define WHERE_FFL_HERE __FILE__, __func__, __LINE__ diff --git a/src/ckdb_cmd.c b/src/ckdb_cmd.c index dc67fa94..39baa646 100644 --- a/src/ckdb_cmd.c +++ b/src/ckdb_cmd.c @@ -2163,7 +2163,6 @@ static char *cmd_workers(__maybe_unused PGconn *conn, char *cmd, char *id, w_hashrate24hr += userstats->hashrate24hr; if (w_elapsed == -1 || w_elapsed > userstats->elapsed) w_elapsed = userstats->elapsed; - w_instances += userstats->instances; if (userstats->instances != NO_INSTANCE_DATA) { if (w_instances == NO_INSTANCE_DATA) w_instances = 0; @@ -2327,11 +2326,17 @@ static char *cmd_allusers(__maybe_unused PGconn *conn, char *cmd, char *id, STRNCPY(userstats_u->workername, userstats->workername); userstats_u->hashrate5m = userstats->hashrate5m; userstats_u->hashrate1hr = userstats->hashrate1hr; + userstats_u->instances = userstats->instances; k_add_head(usu_store, usu_item); } else { userstats_u->hashrate5m += userstats->hashrate5m; userstats_u->hashrate1hr += userstats->hashrate1hr; + if (userstats->instances != NO_INSTANCE_DATA) { + if ( userstats_u->instances == NO_INSTANCE_DATA) + userstats_u->instances = 0; + userstats_u->instances += userstats->instances; + } } } us_item = next_in_ktree(us_ctx); @@ -2370,6 +2375,10 @@ static char *cmd_allusers(__maybe_unused PGconn *conn, char *cmd, char *id, snprintf(tmp, sizeof(tmp), "u_hashrate1hr:%d=%s%c", rows, reply, FLDSEP); APPEND_REALLOC(buf, off, len, tmp); + int_to_buf(userstats_u->instances, reply, sizeof(reply)); + snprintf(tmp, sizeof(tmp), "u_instances:%d=%s%c", rows, reply, FLDSEP); + APPEND_REALLOC(buf, off, len, tmp); + rows++; } usu_item = usu_item->next; @@ -2383,7 +2392,8 @@ static char *cmd_allusers(__maybe_unused PGconn *conn, char *cmd, char *id, snprintf(tmp, sizeof(tmp), "rows=%d%cflds=%s%c", rows, FLDSEP, - "username,userid,u_hashrate5m,u_hashrate1hr", FLDSEP); + "username,userid,u_hashrate5m,u_hashrate1hr,u_instances", + FLDSEP); APPEND_REALLOC(buf, off, len, tmp); snprintf(tmp, sizeof(tmp), "arn=%s%carp=%s", "Users", FLDSEP, ""); @@ -3231,6 +3241,7 @@ static char *cmd_homepage(__maybe_unused PGconn *conn, char *cmd, char *id, BLOCKS *blocks; USERS *users; int64_t u_elapsed; + int u_instances; K_TREE_CTX ctx[1]; size_t len, off; bool has_uhr; @@ -3432,6 +3443,7 @@ static char *cmd_homepage(__maybe_unused PGconn *conn, char *cmd, char *id, if (p_item && u_item) { u_hashrate5m = u_hashrate1hr = 0.0; u_elapsed = -1; + u_instances = NO_INSTANCE_DATA; /* find last matching userid record - before userid+1 * Use 'before' in case there is (unexpectedly) a userstats * with an empty workername */ @@ -3448,6 +3460,11 @@ static char *cmd_homepage(__maybe_unused PGconn *conn, char *cmd, char *id, u_hashrate1hr += userstats->hashrate1hr; if (u_elapsed == -1 || u_elapsed > userstats->elapsed) u_elapsed = userstats->elapsed; + if (userstats->instances != NO_INSTANCE_DATA) { + if (u_instances == NO_INSTANCE_DATA) + u_instances = 0; + u_instances += userstats->instances; + } has_uhr = true; } us_item = prev_in_ktree(ctx); @@ -3468,9 +3485,14 @@ static char *cmd_homepage(__maybe_unused PGconn *conn, char *cmd, char *id, bigint_to_buf(u_elapsed, reply, siz); snprintf(tmp, sizeof(tmp), "u_elapsed=%s", reply); APPEND_REALLOC(buf, off, len, tmp); + + int_to_buf(u_instances, reply, siz); + snprintf(tmp, sizeof(tmp), "u_instances=%s", reply); + APPEND_REALLOC(buf, off, len, tmp); } else { - snprintf(tmp, sizeof(tmp), "u_hashrate5m=?%cu_hashrate1hr=?%cu_elapsed=?", - FLDSEP, FLDSEP); + snprintf(tmp, sizeof(tmp), + "u_hashrate5m=?%cu_hashrate1hr=?%cu_elapsed=?%cu_instances=?", + FLDSEP, FLDSEP, FLDSEP); APPEND_REALLOC(buf, off, len, tmp); } diff --git a/src/stratifier.c b/src/stratifier.c index ee916644..89a75c8e 100644 --- a/src/stratifier.c +++ b/src/stratifier.c @@ -2669,6 +2669,11 @@ static void stratum_broadcast(sdata_t *sdata, json_t *val, const int msg_type) return; } + if (ckp->node) { + json_decref(val); + return; + } + /* Use this locking as an opportunity to test other clients. */ ck_rlock(&ckp_sdata->instance_lock); HASH_ITER(hh, ckp_sdata->stratum_instances, client, tmp) {