mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-22 20:44:19 +00:00
Make the initialisation of the stratum thread more robust allowing the watchpool thread safe access to it after the stratum thread is started.
This commit is contained in:
parent
b45a07032a
commit
e746ed6412
25
cgminer.c
25
cgminer.c
@ -4988,22 +4988,19 @@ static bool pool_active(struct pool *pool, bool pinging)
|
|||||||
retry_stratum:
|
retry_stratum:
|
||||||
if (pool->has_stratum) {
|
if (pool->has_stratum) {
|
||||||
/* We create the stratum thread for each pool just after
|
/* We create the stratum thread for each pool just after
|
||||||
* successful authorisation. Once the auth flag has been set
|
* successful authorisation. Once the init flag has been set
|
||||||
* we never unset it and the stratum thread is responsible for
|
* we never unset it and the stratum thread is responsible for
|
||||||
* setting/unsetting the active flag */
|
* setting/unsetting the active flag */
|
||||||
if (pool->stratum_auth)
|
bool init = pool_tset(pool, &pool->stratum_init);
|
||||||
return pool->stratum_active;
|
|
||||||
if (!pool->stratum_active && !initiate_stratum(pool))
|
if (!init) {
|
||||||
return false;
|
bool ret = initiate_stratum(pool) && auth_stratum(pool);
|
||||||
if (!auth_stratum(pool))
|
|
||||||
return false;
|
pool->idle = ret;
|
||||||
/* Only set stratum_auth once to prevent multiple threads
|
init_stratum_thread(pool);
|
||||||
* being started */
|
return ret;
|
||||||
if (pool_tset(pool, &pool->stratum_auth))
|
}
|
||||||
return true;
|
return pool->stratum_active;
|
||||||
pool->idle = false;
|
|
||||||
init_stratum_thread(pool);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
|
2
miner.h
2
miner.h
@ -997,7 +997,7 @@ struct pool {
|
|||||||
char *sessionid;
|
char *sessionid;
|
||||||
bool has_stratum;
|
bool has_stratum;
|
||||||
bool stratum_active;
|
bool stratum_active;
|
||||||
bool stratum_auth;
|
bool stratum_init;
|
||||||
bool stratum_notify;
|
bool stratum_notify;
|
||||||
struct stratum_work swork;
|
struct stratum_work swork;
|
||||||
pthread_t stratum_thread;
|
pthread_t stratum_thread;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user