mirror of
https://github.com/GOSTSec/sgminer
synced 2025-08-26 13:52:02 +00:00
Keep a connection open on higher priority stratum pools to fail back to them.
This commit is contained in:
parent
f3ce5777a2
commit
3b84131f10
27
cgminer.c
27
cgminer.c
@ -4802,6 +4802,16 @@ static void clear_pool_work(struct pool *pool)
|
|||||||
mutex_unlock(stgd_lock);
|
mutex_unlock(stgd_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cp_prio(void)
|
||||||
|
{
|
||||||
|
int prio;
|
||||||
|
|
||||||
|
mutex_lock(&control_lock);
|
||||||
|
prio = currentpool->prio;
|
||||||
|
mutex_unlock(&control_lock);
|
||||||
|
return prio;
|
||||||
|
}
|
||||||
|
|
||||||
/* We only need to maintain a secondary pool connection when we need the
|
/* We only need to maintain a secondary pool connection when we need the
|
||||||
* capacity to get work from the backup pools while still on the primary */
|
* capacity to get work from the backup pools while still on the primary */
|
||||||
static bool cnx_needed(struct pool *pool)
|
static bool cnx_needed(struct pool *pool)
|
||||||
@ -4829,6 +4839,11 @@ static bool cnx_needed(struct pool *pool)
|
|||||||
* connection open. */
|
* connection open. */
|
||||||
if (pool->sshares)
|
if (pool->sshares)
|
||||||
return true;
|
return true;
|
||||||
|
/* If the pool has only just come to life and is higher priority than
|
||||||
|
* the current pool keep the connection open so we can fail back to
|
||||||
|
* it. */
|
||||||
|
if (pool_strategy == POOL_FAILOVER && pool->prio < cp_prio())
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5173,19 +5188,9 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int cp_prio(void)
|
|
||||||
{
|
|
||||||
int prio;
|
|
||||||
|
|
||||||
mutex_lock(&control_lock);
|
|
||||||
prio = currentpool->prio;
|
|
||||||
mutex_unlock(&control_lock);
|
|
||||||
return prio;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void pool_resus(struct pool *pool)
|
static void pool_resus(struct pool *pool)
|
||||||
{
|
{
|
||||||
if (pool->prio < cp_prio() && pool_strategy == POOL_FAILOVER) {
|
if (pool_strategy == POOL_FAILOVER && pool->prio < cp_prio()) {
|
||||||
applog(LOG_WARNING, "Pool %d %s alive", pool->pool_no, pool->rpc_url);
|
applog(LOG_WARNING, "Pool %d %s alive", pool->pool_no, pool->rpc_url);
|
||||||
switch_pools(NULL);
|
switch_pools(NULL);
|
||||||
} else
|
} else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user