Browse Source

Bugfix: SSM: Actually acquire and release extranonce1s

Luke Dashjr 12 years ago
parent
commit
cd328558dd
1 changed files with 3 additions and 0 deletions
  1. 3 0
      driver-stratum.c

+ 3 - 0
driver-stratum.c

@@ -363,6 +363,7 @@ void stratumsrv_mining_subscribe(struct bufferevent *bev, json_t *params, const
 		for (xnonce1 = MAX_CLIENTS; _ssm_xnonce1s[xnonce1]; --xnonce1)
 		for (xnonce1 = MAX_CLIENTS; _ssm_xnonce1s[xnonce1]; --xnonce1)
 			if (!xnonce1)
 			if (!xnonce1)
 				return_stratumsrv_failure(20, "Maximum clients already connected");
 				return_stratumsrv_failure(20, "Maximum clients already connected");
+		_ssm_xnonce1s[xnonce1] = true;
 		*xnonce1_p = htole32(xnonce1);
 		*xnonce1_p = htole32(xnonce1);
 	}
 	}
 	
 	
@@ -530,10 +531,12 @@ static
 void stratumsrv_client_close(struct stratumsrv_conn * const conn)
 void stratumsrv_client_close(struct stratumsrv_conn * const conn)
 {
 {
 	struct bufferevent * const bev = conn->bev;
 	struct bufferevent * const bev = conn->bev;
+	uint32_t xnonce1 = le32toh(conn->xnonce1_le);
 	
 	
 	bufferevent_free(bev);
 	bufferevent_free(bev);
 	LL_DELETE(_ssm_connections, conn);
 	LL_DELETE(_ssm_connections, conn);
 	free(conn);
 	free(conn);
+	_ssm_xnonce1s[xnonce1] = false;
 }
 }
 
 
 static
 static