API use control_lock when switching pools
diff --git a/api.c b/api.c
index 241638b..c2e1f7d 100644
--- a/api.c
+++ b/api.c
@@ -2301,13 +2301,16 @@ static void switchpool(struct io_data *io_data, __maybe_unused SOCKETTYPE c, cha
}
id = atoi(param);
+ mutex_lock(&control_lock);
if (id < 0 || id >= total_pools) {
+ mutex_unlock(&control_lock);
message(io_data, MSG_INVPID, id, NULL, isjson);
return;
}
pool = pools[id];
pool->enabled = POOL_ENABLED;
+ mutex_unlock(&control_lock);
switch_pools(pool);
message(io_data, MSG_SWITCHP, id, NULL, isjson);
diff --git a/miner.h b/miner.h
index 4c34131..2d4f7ff 100644
--- a/miner.h
+++ b/miner.h
@@ -754,6 +754,7 @@ extern int opt_expiry;
extern pthread_mutex_t cgusb_lock;
#endif
+extern pthread_mutex_t control_lock;
extern pthread_mutex_t hash_lock;
extern pthread_mutex_t console_lock;
extern pthread_mutex_t ch_lock;