From 7c9fe7112e2996b0024786f44cc5c8112c642237 Mon Sep 17 00:00:00 2001 From: elbandi Date: Fri, 21 Aug 2015 21:16:51 +0200 Subject: [PATCH] Apply immediately the first set_difficulty This is a workaround for pool, who send the first difficulty after notify --- util.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/util.c b/util.c index 95adc2ee..3f76aa13 100644 --- a/util.c +++ b/util.c @@ -1560,7 +1560,9 @@ static bool parse_notify(struct pool *pool, json_t *val) pool->swork.nbit = nbit; pool->swork.ntime = ntime; pool->swork.clean = clean; - pool->swork.diff = pool->next_diff; + if (pool->next_diff > 0) { + pool->swork.diff = pool->next_diff; + } alloc_len = pool->swork.cb_len = cb1_len + pool->n1_len + pool->n2size + cb2_len; pool->nonce2_offset = cb1_len + pool->n1_len; @@ -1669,8 +1671,13 @@ static bool parse_diff(struct pool *pool, json_t *val) return false; cg_wlock(&pool->data_lock); - old_diff = pool->next_diff; - pool->next_diff = diff; + if (pool->next_diff > 0) { + old_diff = pool->next_diff; + pool->next_diff = diff; + } else { + old_diff = pool->swork.diff; + pool->next_diff = pool->swork.diff = diff; + } cg_wunlock(&pool->data_lock); if (old_diff != diff) { @@ -2561,7 +2568,8 @@ out: if (!pool->stratum_url) pool->stratum_url = pool->sockaddr_url; pool->stratum_active = true; - pool->next_diff = pool->swork.diff = 1; + pool->next_diff = 0; + pool->swork.diff = 1; if (opt_protocol) { applog(LOG_DEBUG, "%s confirmed mining.subscribe with extranonce1 %s extran2size %d", get_pool_name(pool), pool->nonce1, pool->n2size);