Browse Source

Merge commit '783af87' into stratum

Luke Dashjr 13 years ago
parent
commit
523a74b9bf
2 changed files with 28 additions and 4 deletions
  1. 0 1
      miner.c
  2. 28 3
      util.c

+ 0 - 1
miner.c

@@ -5023,7 +5023,6 @@ static void *stratum_thread(void *userdata)
 			pool->getfail_occasions++;
 			total_go++;
 
-			pool->stratum_active = false;
 			if (initiate_stratum(pool) && auth_stratum(pool))
 				continue;
 

+ 28 - 3
util.c

@@ -828,6 +828,7 @@ bool extract_sockaddr(struct pool *pool, char *url)
 
 	pool->server = (struct sockaddr_in *)res->ai_addr;
 	pool->sockaddr_url = strdup(url_address);
+
 	return true;
 }
 
@@ -1074,6 +1075,27 @@ static bool parse_diff(struct pool *pool, json_t *val)
 	return true;
 }
 
+static bool parse_reconnect(struct pool *pool, json_t *val)
+{
+	char *url;
+
+	url = (char *)json_string_value(json_array_get(val, 0));
+	if (!url)
+		return false;
+
+	if (!extract_sockaddr(pool, url))
+		return false;
+
+	pool->stratum_url = pool->sockaddr_url;
+
+	applog(LOG_NOTICE, "Reconnect requested from pool %d to %s", pool->pool_no, pool->stratum_url);
+
+	if (!initiate_stratum(pool) || !auth_stratum(pool))
+		return false;
+
+	return true;
+}
+
 bool parse_method(struct pool *pool, char *s)
 {
 	json_t *val = NULL, *method, *err_val, *params;
@@ -1125,6 +1147,11 @@ bool parse_method(struct pool *pool, char *s)
 		goto out;
 	}
 
+	if (!strncasecmp(buf, "mining.reconnect", 16) && parse_reconnect(pool, params)) {
+		ret = true;
+		goto out;
+	}
+
 out:
 	if (val)
 		json_decref(val);
@@ -1195,9 +1222,6 @@ bool initiate_stratum(struct pool *pool)
 	json_error_t err;
 	bool ret = false;
 
-	if (pool->stratum_active)
-		return true;
-
 	if (!pool->stratum_curl) {
 		pool->stratum_curl = curl_easy_init();
 		if (unlikely(!pool->stratum_curl))
@@ -1296,6 +1320,7 @@ out:
 			       pool->pool_no, pool->nonce1, pool->n2size);
 		}
 	} else {
+		pool->stratum_active = false;
 		if (curl) {
 			curl_easy_cleanup(curl);
 			pool->stratum_curl = NULL;