Only set share diff if we've confirmed it's a share first.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
diff --git a/cgminer.c b/cgminer.c
index 43bc003..49931b6 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -3658,15 +3658,6 @@ static void rebuild_hash(struct work *work)
scrypt_regenhash(work);
else
regen_hash(work);
-
- work->share_diff = share_diff(work);
- if (unlikely(work->share_diff >= current_diff)) {
- work->block = true;
- work->pool->solved++;
- found_blocks++;
- work->mandatory = true;
- applog(LOG_NOTICE, "Found block for pool %d!", work->pool->pool_no);
- }
}
static bool cnx_needed(struct pool *pool);
@@ -6045,6 +6036,7 @@ bool submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
cgtime(&tv_work_found);
*work_nonce = htole32(nonce);
+ work->share_diff = 0;
/* Do one last check before attempting to submit the work */
rebuild_hash(work);
@@ -6060,6 +6052,8 @@ bool submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
goto out;
}
+ work->share_diff = share_diff(work);
+
mutex_lock(&stats_lock);
total_diff1 += work->device_diff;
thr->cgpu->diff1 += work->device_diff;