diff --git a/api.c b/api.c index 6d77c600..9140df64 100644 --- a/api.c +++ b/api.c @@ -3433,12 +3433,10 @@ static void send_result(struct io_data *io_data, SOCKETTYPE c, bool isjson) // ignore failure - it's closed immediately anyway n = send(c, buf, len+1, 0); - if (opt_debug) { - if (SOCKETFAIL(n)) - applog(LOG_DEBUG, "API: send failed: %s", SOCKERRMSG); - else - applog(LOG_DEBUG, "API: sent %d", n); - } + if (SOCKETFAIL(n)) + applog(LOG_WARNING, "API: send failed: %s", SOCKERRMSG); + else + applog(LOG_DEBUG, "API: sent %d", n); } static void tidyup(__maybe_unused void *arg) diff --git a/cgminer.c b/cgminer.c index 23b2aca7..964815ac 100644 --- a/cgminer.c +++ b/cgminer.c @@ -4702,12 +4702,14 @@ out: void clear_stratum_shares(struct pool *pool) { struct stratum_share *sshare, *tmpshare; + double diff_cleared = 0; int cleared = 0; mutex_lock(&sshare_lock); HASH_ITER(hh, stratum_shares, sshare, tmpshare) { if (sshare->work->pool == pool) { HASH_DEL(stratum_shares, sshare); + diff_cleared += sshare->work->work_difficulty; free_work(sshare->work); free(sshare); cleared++; @@ -4719,6 +4721,8 @@ void clear_stratum_shares(struct pool *pool) applog(LOG_WARNING, "Lost %d shares due to stratum disconnect on pool %d", cleared, pool->pool_no); pool->stale_shares += cleared; total_stale += cleared; + pool->diff_stale += diff_cleared; + total_diff_stale += diff_cleared; } } diff --git a/driver-bitforce.c b/driver-bitforce.c index b7f238b9..228fa5e7 100644 --- a/driver-bitforce.c +++ b/driver-bitforce.c @@ -85,6 +85,9 @@ static void bitforce_initialise(struct cgpu_info *bitforce, bool lock) if (lock) mutex_lock(&bitforce->device_mutex); + if (bitforce->usbinfo.nodev) + goto failed; + // Reset err = usb_transfer(bitforce, FTDI_TYPE_OUT, FTDI_REQUEST_RESET, FTDI_VALUE_RESET, bitforce->usbdev->found->interface, C_RESET);