Set the lp_sent bool earlier to minimise the number of extra longpolls sent out.
diff --git a/cgminer.c b/cgminer.c
index 8264db5..d7dfb47 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -1593,6 +1593,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->is_lp && pool->hdr_path && !pool->lp_sent)) {
+ pool->lp_sent = true;
req_longpoll = true;
url = pool->lp_url;
}
diff --git a/util.c b/util.c
index a28c0e1..594ba87 100644
--- a/util.c
+++ b/util.c
@@ -301,12 +301,10 @@ json_t *json_rpc_call(CURL *curl, const char *url,
curl_easy_setopt(curl, CURLOPT_USERPWD, userpass);
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
}
- if (longpoll) {
- pool->lp_sent = true;
#ifdef CURL_HAS_SOCKOPT
+ if (longpoll)
curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, json_rpc_call_sockopt_cb);
#endif
- }
curl_easy_setopt(curl, CURLOPT_POST, 1);
if (opt_protocol)