Commit 501f4cd6eca32eac678ae64828c58f143ce5bb4e

Con Kolivas 2013-03-07T19:59:30

Clear the socket of anything in the receive buffer if we're going to retry connecting.

diff --git a/util.c b/util.c
index e15ab5a..44ab0b5 100644
--- a/util.c
+++ b/util.c
@@ -1525,13 +1525,16 @@ bool initiate_stratum(struct pool *pool)
 
 	sockd = true;
 resend:
-	if (!recvd) {
+	if (recvd) {
+		/* Get rid of any crap lying around if we're resending */
+		clear_sock(pool);
+		sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": []}", swork_id++);
+	} else {
 		if (pool->sessionid)
 			sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": [\""PACKAGE"/"VERSION"\", \"%s\"]}", swork_id++, pool->sessionid);
 		else
 			sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": [\""PACKAGE"/"VERSION"\"]}", swork_id++);
-	} else
-		sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": []}", swork_id++);
+	}
 
 	if (!__stratum_send(pool, s, strlen(s))) {
 		applog(LOG_DEBUG, "Failed to send s in initiate_stratum");