Do not use or count or use the getworks submitted which are simply testing that pools are still up. This was increasing share leakage and making stats not reflect real work.
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 f6ac12d..85abbb5 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -5936,30 +5936,17 @@ static bool pool_getswork(struct pool *pool)
gettimeofday(&tv_getwork_reply, NULL);
if (val) {
- struct work *work = make_work();
- bool rc = work_decode(pool, work, val);
+ struct work work;
+ bool rc = work_decode(pool, &work, val);
if (rc) {
applog(LOG_DEBUG, "Successfully retrieved and deciphered work from pool %u %s",
pool->pool_no, pool->rpc_url);
- work->pool = pool;
- work->rolltime = rolltime;
- memcpy(&(work->tv_getwork), &tv_getwork, sizeof(struct timeval));
- memcpy(&(work->tv_getwork_reply), &tv_getwork_reply, sizeof(struct timeval));
- work->getwork_mode = GETWORK_MODE_TESTPOOL;
- calc_diff(work, 0);
- applog(LOG_DEBUG, "Pushing pool_getswork work for pool %d", pool->pool_no);
-
- tq_push(thr_info[stage_thr_id].q, work);
- total_getworks++;
- pool->getwork_requested++;
- ret = true;
gettimeofday(&pool->tv_idle, NULL);
ret = true;
} else {
applog(LOG_DEBUG, "Successfully retrieved but FAILED to decipher work from pool %u %s",
pool->pool_no, pool->rpc_url);
- free_work(work);
}
json_decref(val);
} else {