Check for cnx_needed on each loop through wait_lp_current.
diff --git a/cgminer.c b/cgminer.c
index 0a2982e..d997534 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -6304,12 +6304,9 @@ static struct pool *select_longpoll_pool(struct pool *cp)
*/
static void wait_lpcurrent(struct pool *pool)
{
- if (cnx_needed(pool))
- return;
-
- while (pool->enabled == POOL_DISABLED ||
+ while (!cnx_needed(pool) && (pool->enabled == POOL_DISABLED ||
(pool != current_pool() && pool_strategy != POOL_LOADBALANCE &&
- pool_strategy != POOL_BALANCE)) {
+ pool_strategy != POOL_BALANCE))) {
mutex_lock(&lp_lock);
pthread_cond_wait(&lp_cond, &lp_lock);
mutex_unlock(&lp_lock);