|
|
@ -2272,7 +2272,7 @@ int curses_int(const char *query) |
|
|
|
|
|
|
|
|
|
|
|
static bool input_pool(bool live); |
|
|
|
static bool input_pool(bool live); |
|
|
|
|
|
|
|
|
|
|
|
static int active_pools(void) |
|
|
|
int active_pools(void) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int ret = 0; |
|
|
|
int ret = 0; |
|
|
|
int i; |
|
|
|
int i; |
|
|
@ -4051,10 +4051,43 @@ char *curses_input(const char *query) |
|
|
|
return input; |
|
|
|
return input; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int add_pool_details(bool live, char *url, char *user, char *pass) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
struct pool *pool = NULL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (total_pools == MAX_POOLS) |
|
|
|
|
|
|
|
return ADD_POOL_MAXIMUM; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pool = calloc(sizeof(struct pool), 1); |
|
|
|
|
|
|
|
if (!pool) |
|
|
|
|
|
|
|
quit(1, "Failed to realloc pools in add_pool_details"); |
|
|
|
|
|
|
|
pool->pool_no = total_pools; |
|
|
|
|
|
|
|
pool->prio = total_pools; |
|
|
|
|
|
|
|
if (unlikely(pthread_mutex_init(&pool->pool_lock, NULL))) |
|
|
|
|
|
|
|
quit (1, "Failed to pthread_mutex_init in input_pool"); |
|
|
|
|
|
|
|
pool->rpc_url = url; |
|
|
|
|
|
|
|
pool->rpc_user = user; |
|
|
|
|
|
|
|
pool->rpc_pass = pass; |
|
|
|
|
|
|
|
pool->rpc_userpass = malloc(strlen(pool->rpc_user) + strlen(pool->rpc_pass) + 2); |
|
|
|
|
|
|
|
if (!pool->rpc_userpass) |
|
|
|
|
|
|
|
quit(1, "Failed to malloc userpass"); |
|
|
|
|
|
|
|
sprintf(pool->rpc_userpass, "%s:%s", pool->rpc_user, pool->rpc_pass); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pool->tv_idle.tv_sec = ~0UL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Test the pool is not idle if we're live running, otherwise
|
|
|
|
|
|
|
|
* it will be tested separately */ |
|
|
|
|
|
|
|
pool->enabled = true; |
|
|
|
|
|
|
|
if (live && !pool_active(pool, false)) |
|
|
|
|
|
|
|
pool->idle = true; |
|
|
|
|
|
|
|
pools[total_pools++] = pool; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ADD_POOL_OK; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static bool input_pool(bool live) |
|
|
|
static bool input_pool(bool live) |
|
|
|
{ |
|
|
|
{ |
|
|
|
char *url = NULL, *user = NULL, *pass = NULL; |
|
|
|
char *url = NULL, *user = NULL, *pass = NULL; |
|
|
|
struct pool *pool = NULL; |
|
|
|
|
|
|
|
bool ret = false; |
|
|
|
bool ret = false; |
|
|
|
|
|
|
|
|
|
|
|
immedok(logwin, true); |
|
|
|
immedok(logwin, true); |
|
|
@ -4089,30 +4122,7 @@ static bool input_pool(bool live) |
|
|
|
if (!pass) |
|
|
|
if (!pass) |
|
|
|
goto out; |
|
|
|
goto out; |
|
|
|
|
|
|
|
|
|
|
|
pool = calloc(sizeof(struct pool), 1); |
|
|
|
ret = (add_pool_details(live, url, user, pass) == ADD_POOL_OK); |
|
|
|
if (!pool) |
|
|
|
|
|
|
|
quit(1, "Failed to realloc pools in input_pool"); |
|
|
|
|
|
|
|
pool->pool_no = total_pools; |
|
|
|
|
|
|
|
pool->prio = total_pools; |
|
|
|
|
|
|
|
if (unlikely(pthread_mutex_init(&pool->pool_lock, NULL))) |
|
|
|
|
|
|
|
quit (1, "Failed to pthread_mutex_init in input_pool"); |
|
|
|
|
|
|
|
pool->rpc_url = url; |
|
|
|
|
|
|
|
pool->rpc_user = user; |
|
|
|
|
|
|
|
pool->rpc_pass = pass; |
|
|
|
|
|
|
|
pool->rpc_userpass = malloc(strlen(pool->rpc_user) + strlen(pool->rpc_pass) + 2); |
|
|
|
|
|
|
|
if (!pool->rpc_userpass) |
|
|
|
|
|
|
|
quit(1, "Failed to malloc userpass"); |
|
|
|
|
|
|
|
sprintf(pool->rpc_userpass, "%s:%s", pool->rpc_user, pool->rpc_pass); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pool->tv_idle.tv_sec = ~0UL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Test the pool is not idle if we're live running, otherwise
|
|
|
|
|
|
|
|
* it will be tested separately */ |
|
|
|
|
|
|
|
ret = true; |
|
|
|
|
|
|
|
pool->enabled = true; |
|
|
|
|
|
|
|
if (live && !pool_active(pool, false)) |
|
|
|
|
|
|
|
pool->idle = true; |
|
|
|
|
|
|
|
pools[total_pools++] = pool; |
|
|
|
|
|
|
|
out: |
|
|
|
out: |
|
|
|
immedok(logwin, false); |
|
|
|
immedok(logwin, false); |
|
|
|
|
|
|
|
|
|
|
@ -4123,8 +4133,6 @@ out: |
|
|
|
free(user); |
|
|
|
free(user); |
|
|
|
if (pass) |
|
|
|
if (pass) |
|
|
|
free(pass); |
|
|
|
free(pass); |
|
|
|
if (pool) |
|
|
|
|
|
|
|
free(pool); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|