Browse Source

Start longpoll only after we have tried to extract the longpoll URL.

nfactor-troky
Con Kolivas 13 years ago
parent
commit
1ab318d0f3
  1. 16
      cgminer.c
  2. 1
      miner.h

16
cgminer.c

@ -378,7 +378,6 @@ static void sharelog(const char*disposition, const struct work*work)
static void *submit_work_thread(void *userdata); static void *submit_work_thread(void *userdata);
static void *get_work_thread(void *userdata); static void *get_work_thread(void *userdata);
static void *longpoll_thread(void *userdata);
static void add_pool(void) static void add_pool(void)
{ {
@ -402,8 +401,6 @@ static void add_pool(void)
quit(1, "Failed to create pool submit thread"); quit(1, "Failed to create pool submit thread");
if (unlikely(pthread_create(&pool->getwork_thread, NULL, get_work_thread, (void *)pool))) if (unlikely(pthread_create(&pool->getwork_thread, NULL, get_work_thread, (void *)pool)))
quit(1, "Failed to create pool getwork thread"); quit(1, "Failed to create pool getwork thread");
if (unlikely(pthread_create(&pool->longpoll_thread, NULL, longpoll_thread, (void *)pool)))
quit(1, "Failed to create pool longpoll thread");
} }
/* Pool variant of test and set */ /* Pool variant of test and set */
@ -3214,6 +3211,8 @@ out_unlock:
} }
} }
static void *longpoll_thread(void *userdata);
static bool pool_active(struct pool *pool, bool pinging) static bool pool_active(struct pool *pool, bool pinging)
{ {
bool ret = false; bool ret = false;
@ -3256,9 +3255,8 @@ static bool pool_active(struct pool *pool, bool pinging)
} }
json_decref(val); json_decref(val);
/* We may be updating the url after the pool has died */
if (pool->lp_url) if (pool->lp_url)
free(pool->lp_url); goto out;
/* Decipher the longpoll URL, if any, and store it in ->lp_url */ /* Decipher the longpoll URL, if any, and store it in ->lp_url */
if (pool->hdr_path) { if (pool->hdr_path) {
@ -3285,13 +3283,19 @@ static bool pool_active(struct pool *pool, bool pinging)
} }
} else } else
pool->lp_url = NULL; pool->lp_url = NULL;
if (!pool->lp_started) {
pool->lp_started = true;
if (unlikely(pthread_create(&pool->longpoll_thread, NULL, longpoll_thread, (void *)pool)))
quit(1, "Failed to create pool longpoll thread");
}
} else { } else {
applog(LOG_DEBUG, "FAILED to retrieve work from pool %u %s", applog(LOG_DEBUG, "FAILED to retrieve work from pool %u %s",
pool->pool_no, pool->rpc_url); pool->pool_no, pool->rpc_url);
if (!pinging) if (!pinging)
applog(LOG_WARNING, "Pool %u slow/down or URL or credentials invalid", pool->pool_no); applog(LOG_WARNING, "Pool %u slow/down or URL or credentials invalid", pool->pool_no);
} }
out:
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
return ret; return ret;
} }

1
miner.h

@ -610,6 +610,7 @@ struct pool {
bool enabled; bool enabled;
bool submit_old; bool submit_old;
bool removed; bool removed;
bool lp_started;
char *hdr_path; char *hdr_path;
char *lp_url; char *lp_url;

Loading…
Cancel
Save