Browse Source

Keep a connection open on higher priority stratum pools to fail back to them.

nfactor-troky
Con Kolivas 12 years ago
parent
commit
3b84131f10
  1. 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…
Cancel
Save