Check the job_id has not changed on stratum work when deciding if the work is stale as might occur across disconnections.
diff --git a/cgminer.c b/cgminer.c
index 44a2438..d7f0020 100644
--- a/cgminer.c
+++ b/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;