Browse Source

Stratum: Roll ntime as we generate work

Luke Dashjr 12 years ago
parent
commit
acf7832b84
3 changed files with 3 additions and 1 deletions
  1. 1 1
      miner.c
  2. 1 0
      miner.h
  3. 1 0
      util.c

+ 1 - 1
miner.c

@@ -7221,7 +7221,7 @@ static void gen_stratum_work(struct pool *pool, struct work *work)
 	
 	memcpy(&work->data[0], pool->swork.header1, 36);
 	memcpy(&work->data[36], merkle_root, 32);
-	*((uint32_t*)&work->data[68]) = htobe32(pool->swork.ntime);
+	*((uint32_t*)&work->data[68]) = htobe32(pool->swork.ntime + timer_elapsed(&pool->swork.tv_received, NULL));
 	memcpy(&work->data[72], pool->swork.diffbits, 4);
 	memset(&work->data[76], 0, 4);  // nonce
 	memcpy(&work->data[80], workpadding_bin, 48);

+ 1 - 0
miner.h

@@ -1089,6 +1089,7 @@ struct stratum_work {
 	uint8_t header1[36];
 	uint8_t diffbits[4];
 	uint32_t ntime;
+	struct timeval tv_received;
 
 	double diff;
 

+ 1 - 0
util.c

@@ -1668,6 +1668,7 @@ static bool parse_notify(struct pool *pool, json_t *val)
 		goto out;
 
 	cg_wlock(&pool->data_lock);
+	cgtime(&pool->swork.tv_received);
 	free(pool->swork.job_id);
 	pool->swork.job_id = job_id;
 	pool->submit_old = !clean;