diff --git a/cgminer.c b/cgminer.c index b2442107..8264db54 100644 --- a/cgminer.c +++ b/cgminer.c @@ -1592,7 +1592,7 @@ static bool get_upstream_work(struct work *work, bool lagging) /* If this is the current pool and supports longpoll but has not sent * a longpoll, send one now */ - if (unlikely(pool == current_pool() && pool->hdr_path && !pool->lp_sent)) { + if (unlikely(pool == current_pool() && !pool->is_lp && pool->hdr_path && !pool->lp_sent)) { req_longpoll = true; url = pool->lp_url; } @@ -3566,6 +3566,7 @@ static void *longpoll_thread(void *userdata) } } + pool->is_lp = true; have_longpoll = true; applog(LOG_WARNING, "Long-polling activated for %s", pool->lp_url); @@ -3610,7 +3611,9 @@ static void *longpoll_thread(void *userdata) } sp = select_longpoll_pool(); if (sp != pool) { + pool->is_lp = false; pool = sp; + pool->is_lp = true; applog(LOG_WARNING, "Long-polling changed to %s", pool->lp_url); } } diff --git a/miner.h b/miner.h index f75fe43e..c383f918 100644 --- a/miner.h +++ b/miner.h @@ -538,6 +538,7 @@ struct pool { char *hdr_path; char *lp_url; bool lp_sent; + bool is_lp; unsigned int getwork_requested; unsigned int stale_shares;