From 0cddd1ab54921c95a219bb72278a8daa08642b85 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 6 Oct 2012 12:17:46 +1000 Subject: [PATCH] Only set the stratum auth flag once and once the stratum thread is started, use that to set/unset the stratum active flag. --- cgminer.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/cgminer.c b/cgminer.c index b40a77aa..3e190280 100644 --- a/cgminer.c +++ b/cgminer.c @@ -4152,7 +4152,7 @@ static void *stratum_thread(void *userdata) FD_SET(pool->sock, &rd); if (select(pool->sock + 1, &rd, NULL, NULL, NULL) < 0) { - pool->stratum_active = pool->stratum_auth = false; + pool->stratum_active = false; applog(LOG_WARNING, "Stratum connection to pool %d interrupted", pool->pool_no); pool->getfail_occasions++; total_go++; @@ -4231,16 +4231,17 @@ static bool pool_active(struct pool *pool, bool pinging) /* This is the central point we activate stratum when we can */ retry_stratum: if (pool->has_stratum) { - if ((!pool->stratum_active || pinging) && !initiate_stratum(pool)) + /* We create the stratum thread for each pool just after + * successful authorisation. Once the auth flag has been set + * we never unset it and the stratum thread is responsible for + * setting/unsetting the active flag */ + if (pool->stratum_auth) + return pool->stratum_active; + if (!pool->stratum_active && !initiate_stratum(pool)) return false; - if (!pool->stratum_auth) { - if (!auth_stratum(pool)) - return false; - /* We create the stratum thread for each pool just - * after successful authorisation */ - init_stratum_thread(pool); - return true; - } + if (!auth_stratum(pool)) + return false; + init_stratum_thread(pool); return true; }