Browse Source

Make the pools array a dynamically allocated array to allow unlimited pools to be added.

Con Kolivas 13 years ago
parent
commit
c027492fa4
3 changed files with 8 additions and 22 deletions
  1. 1 4
      api.c
  2. 5 12
      cgminer.c
  3. 2 6
      miner.h

+ 1 - 4
api.c

@@ -1636,10 +1636,7 @@ static void addpool(__maybe_unused SOCKETTYPE c, char *param, bool isjson)
 		return;
 		return;
 	}
 	}
 
 
-	if (add_pool_details(true, url, user, pass) == ADD_POOL_MAXIMUM) {
-		strcpy(io_buffer, message(MSG_TOOMANYP, MAX_POOLS, NULL, isjson));
-		return;
-	}
+	add_pool_details(true, url, user, pass);
 
 
 	ptr = escape_string(url, isjson);
 	ptr = escape_string(url, isjson);
 	strcpy(io_buffer, message(MSG_ADDPOOL, 0, ptr, isjson));
 	strcpy(io_buffer, message(MSG_ADDPOOL, 0, ptr, isjson));

+ 5 - 12
cgminer.c

@@ -190,7 +190,7 @@ unsigned int found_blocks;
 unsigned int local_work;
 unsigned int local_work;
 unsigned int total_go, total_ro;
 unsigned int total_go, total_ro;
 
 
-struct pool *pools[MAX_POOLS];
+struct pool **pools;
 static struct pool *currentpool = NULL;
 static struct pool *currentpool = NULL;
 
 
 int total_pools;
 int total_pools;
@@ -395,6 +395,7 @@ static struct pool *add_pool(void)
 	if (!pool)
 	if (!pool)
 		quit(1, "Failed to malloc pool in add_pool");
 		quit(1, "Failed to malloc pool in add_pool");
 	pool->pool_no = pool->prio = total_pools;
 	pool->pool_no = pool->prio = total_pools;
+	pools = realloc(pools, sizeof(struct pool *) * (total_pools + 2));
 	pools[total_pools++] = pool;
 	pools[total_pools++] = pool;
 	if (unlikely(pthread_mutex_init(&pool->pool_lock, NULL)))
 	if (unlikely(pthread_mutex_init(&pool->pool_lock, NULL)))
 		quit(1, "Failed to pthread_mutex_init in add_pool");
 		quit(1, "Failed to pthread_mutex_init in add_pool");
@@ -4702,13 +4703,10 @@ char *curses_input(const char *query)
 }
 }
 #endif
 #endif
 
 
-int add_pool_details(bool live, char *url, char *user, char *pass)
+void add_pool_details(bool live, char *url, char *user, char *pass)
 {
 {
 	struct pool *pool;
 	struct pool *pool;
 
 
-	if (total_pools == MAX_POOLS)
-		return ADD_POOL_MAXIMUM;
-
 	pool = add_pool();
 	pool = add_pool();
 
 
 	pool->rpc_url = url;
 	pool->rpc_url = url;
@@ -4724,8 +4722,6 @@ int add_pool_details(bool live, char *url, char *user, char *pass)
 	pool->enabled = POOL_ENABLED;
 	pool->enabled = POOL_ENABLED;
 	if (live && !pool_active(pool, false))
 	if (live && !pool_active(pool, false))
 		pool->idle = true;
 		pool->idle = true;
-
-	return ADD_POOL_OK;
 }
 }
 
 
 #ifdef HAVE_CURSES
 #ifdef HAVE_CURSES
@@ -4735,10 +4731,6 @@ static bool input_pool(bool live)
 	bool ret = false;
 	bool ret = false;
 
 
 	immedok(logwin, true);
 	immedok(logwin, true);
-	if (total_pools == MAX_POOLS) {
-		wlogprint("Reached maximum number of pools.\n");
-		goto out;
-	}
 	wlogprint("Input server details.\n");
 	wlogprint("Input server details.\n");
 
 
 	url = curses_input("URL");
 	url = curses_input("URL");
@@ -4766,7 +4758,8 @@ static bool input_pool(bool live)
 	if (!pass)
 	if (!pass)
 		goto out;
 		goto out;
 
 
-	ret = (add_pool_details(live, url, user, pass) == ADD_POOL_OK);
+	add_pool_details(live, url, user, pass);
+	ret = true;
 out:
 out:
 	immedok(logwin, false);
 	immedok(logwin, false);
 
 

+ 2 - 6
miner.h

@@ -579,13 +579,9 @@ extern void api(int thr_id);
 
 
 extern struct pool *current_pool(void);
 extern struct pool *current_pool(void);
 extern int active_pools(void);
 extern int active_pools(void);
-extern int add_pool_details(bool live, char *url, char *user, char *pass);
-
-#define ADD_POOL_MAXIMUM 1
-#define ADD_POOL_OK 0
+extern void add_pool_details(bool live, char *url, char *user, char *pass);
 
 
 #define MAX_GPUDEVICES 16
 #define MAX_GPUDEVICES 16
-#define MAX_POOLS (32)
 
 
 #define MIN_INTENSITY -10
 #define MIN_INTENSITY -10
 #define _MIN_INTENSITY_STR "-10"
 #define _MIN_INTENSITY_STR "-10"
@@ -608,7 +604,7 @@ extern struct cgpu_info *cpus;
 extern int total_devices;
 extern int total_devices;
 extern struct cgpu_info **devices;
 extern struct cgpu_info **devices;
 extern int total_pools;
 extern int total_pools;
-extern struct pool *pools[MAX_POOLS];
+extern struct pool **pools;
 extern const char *algo_names[];
 extern const char *algo_names[];
 extern enum sha256_algos opt_algo;
 extern enum sha256_algos opt_algo;
 extern struct strategies strategies[];
 extern struct strategies strategies[];