Commit b20089fdb70a52ec029375beecebfd47efaee218

Con Kolivas 2012-06-24T20:59:55

Take into account total_queued as well when deciding whether to queue a fresh request or not.

diff --git a/cgminer.c b/cgminer.c
index 67691eb..0381b04 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -3501,8 +3501,9 @@ static bool queue_request(struct thr_info *thr, bool needed)
 	int rs = requests_staged(), rq = requests_queued();
 	struct workio_cmd *wc;
 
-	if (rq >= mining_threads || (rq >= opt_queue && rs >= mining_threads))
-		return true;
+	if ((rq >= mining_threads || (rq >= opt_queue && rs >= mining_threads)) &&
+		total_queued >= opt_queue)
+			return true;
 
 	/* fill out work request message */
 	wc = calloc(1, sizeof(*wc));
@@ -4335,7 +4336,7 @@ static void *watchdog_thread(void __maybe_unused *userdata)
 		struct timeval now;
 
 		sleep(interval);
-		if (requests_queued() < opt_queue)
+		if (requests_queued() < opt_queue || total_queued < opt_queue)
 			queue_request(NULL, false);
 
 		age_work();