diff --git a/util.c b/util.c index fad9b085..a2d3a7e3 100644 --- a/util.c +++ b/util.c @@ -1424,12 +1424,11 @@ static bool setup_stratum_curl(struct pool *pool) mutex_lock(&pool->stratum_lock); pool->stratum_active = false; - if (!pool->stratum_curl) { - pool->stratum_curl = curl_easy_init(); - if (unlikely(!pool->stratum_curl)) - quit(1, "Failed to curl_easy_init in initiate_stratum"); - } else - CLOSESOCKET(pool->sock); + if (pool->stratum_curl) + curl_easy_cleanup(pool->stratum_curl); + pool->stratum_curl = curl_easy_init(); + if (unlikely(!pool->stratum_curl)) + quit(1, "Failed to curl_easy_init in initiate_stratum"); mutex_unlock(&pool->stratum_lock); curl = pool->stratum_curl; @@ -1509,8 +1508,9 @@ void suspend_stratum(struct pool *pool) applog(LOG_INFO, "Closing socket for stratum pool %d", pool->pool_no); mutex_lock(&pool->stratum_lock); pool->stratum_active = pool->stratum_notify = false; + curl_easy_cleanup(pool->stratum_curl); + pool->stratum_curl = NULL; mutex_unlock(&pool->stratum_lock); - CLOSESOCKET(pool->sock); } bool initiate_stratum(struct pool *pool)