Commit 419083a7d28d6c43a45e22a2622a2ed0cdc5763d

Kano 2013-03-06T21:19:02

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;