Browse Source

Check the job_id has not changed on stratum work when deciding if the work is stale as might occur across disconnections.

Con Kolivas 13 years ago
parent
commit
5c4c2d6786
1 changed files with 14 additions and 0 deletions
  1. 14 0
      cgminer.c

+ 14 - 0
cgminer.c

@@ -3184,6 +3184,20 @@ static bool stale_work(struct work *work, bool share)
 		work_expiry = opt_expiry;
 
 	pool = work->pool;
+
+	if (pool->has_stratum) {
+		bool same_job = true;
+
+		mutex_lock(&pool->pool_lock);
+		if (strcmp(work->job_id, pool->swork.job_id))
+			same_job = false;
+		mutex_unlock(&pool->pool_lock);
+		if (!same_job) {
+			applog(LOG_DEBUG, "Work stale due to stratum job_id mismatch");
+			return true;
+		}
+	}
+
 	/* Factor in the average getwork delay of this pool, rounding it up to
 	 * the nearest second */
 	getwork_delay = pool->cgminer_pool_stats.getwork_wait_rolling * 5 + 1;