mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-02 10:04:33 +00:00
Set the lp_sent variable under lock since there will almost always be a race on setting this variable, potentially leading to multiple LPs being sent
out.
This commit is contained in:
parent
136b50d51c
commit
f4284a21a8
10
cgminer.c
10
cgminer.c
@ -336,7 +336,7 @@ static bool pool_tset(struct pool *pool, bool *var)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool pool_tclear(struct pool *pool, bool *var)
|
bool pool_tclear(struct pool *pool, bool *var)
|
||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
@ -1592,10 +1592,10 @@ static bool get_upstream_work(struct work *work, bool lagging)
|
|||||||
|
|
||||||
/* If this is the current pool and supports longpoll but has not sent
|
/* If this is the current pool and supports longpoll but has not sent
|
||||||
* a longpoll, send one now */
|
* a longpoll, send one now */
|
||||||
if (unlikely(pool == current_pool() && !pool->is_lp && pool->hdr_path && !pool->lp_sent)) {
|
if (unlikely(!pool->is_lp && pool == current_pool() && pool->hdr_path &&
|
||||||
pool->lp_sent = true;
|
!pool_tset(pool, &pool->lp_sent))) {
|
||||||
req_longpoll = true;
|
req_longpoll = true;
|
||||||
url = pool->lp_url;
|
url = pool->lp_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
retry:
|
retry:
|
||||||
|
1
miner.h
1
miner.h
@ -601,6 +601,7 @@ extern void switch_pools(struct pool *selected);
|
|||||||
extern void write_config(FILE *fcfg);
|
extern void write_config(FILE *fcfg);
|
||||||
extern void log_curses(int prio, const char *f, va_list ap);
|
extern void log_curses(int prio, const char *f, va_list ap);
|
||||||
extern void clear_logwin(void);
|
extern void clear_logwin(void);
|
||||||
|
extern bool pool_tclear(struct pool *pool, bool *var);
|
||||||
extern struct thread_q *tq_new(void);
|
extern struct thread_q *tq_new(void);
|
||||||
extern void tq_free(struct thread_q *tq);
|
extern void tq_free(struct thread_q *tq);
|
||||||
extern bool tq_push(struct thread_q *tq, void *data);
|
extern bool tq_push(struct thread_q *tq, void *data);
|
||||||
|
2
util.c
2
util.c
@ -351,7 +351,7 @@ json_t *json_rpc_call(CURL *curl, const char *url,
|
|||||||
|
|
||||||
rc = curl_easy_perform(curl);
|
rc = curl_easy_perform(curl);
|
||||||
if (longpoll)
|
if (longpoll)
|
||||||
pool->lp_sent = false;
|
pool_tclear(pool, &pool->lp_sent);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
applog(LOG_INFO, "HTTP request failed: %s", curl_err_str);
|
applog(LOG_INFO, "HTTP request failed: %s", curl_err_str);
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user