| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1661,7 +1661,18 @@ static bool rebuild_txns(ckpool_t *ckp, sdata_t *sdata, workbase_t *wb, json_t * | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (ret) { | 
					 | 
					 | 
					 | 
						if (ret) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							LOGINFO("Rebuilt txns into workbase with %d transactions", (int)i); | 
					 | 
					 | 
					 | 
							LOGINFO("Rebuilt txns into workbase with %d transactions", (int)i); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							wb_merkle_bins(ckp, sdata, wb, txn_array, false); | 
					 | 
					 | 
					 | 
							wb_merkle_bins(ckp, sdata, wb, txn_array, false); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (sdata->wbincomplete) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								LOGWARNING("Successfully resumed rebuilding transactions into workinfo"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								sdata->wbincomplete = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else { | 
					 | 
					 | 
					 | 
						} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (!sdata->wbincomplete) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								sdata->wbincomplete = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								if (ckp->proxy) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									LOGWARNING("Unable to rebuild transactions to create workinfo, ignore displayed hashrate"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									LOGWARNING("Unable to rebuild transactions to recreate remote workinfo, unable to submit block locally"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							LOGNOTICE("Failed to find all txns in rebuild_txns"); | 
					 | 
					 | 
					 | 
							LOGNOTICE("Failed to find all txns in rebuild_txns"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							request_txns(ckp, sdata, missing_txns); | 
					 | 
					 | 
					 | 
							request_txns(ckp, sdata, missing_txns); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1788,7 +1799,6 @@ static void add_node_base(ckpool_t *ckp, json_t *val, bool trusted, int64_t clie | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							json_intcpy(&wb->merkles, val, "merkles"); | 
					 | 
					 | 
					 | 
							json_intcpy(&wb->merkles, val, "merkles"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							txnhashes = json_object_get(val, "txn_hashes"); | 
					 | 
					 | 
					 | 
							txnhashes = json_object_get(val, "txn_hashes"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (!rebuild_txns(ckp, sdata, wb, txnhashes)) { | 
					 | 
					 | 
					 | 
							if (!rebuild_txns(ckp, sdata, wb, txnhashes)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								LOGWARNING("Unable to rebuild transactions to create workinfo from remote, will be unable to submit block locally"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								wb->incomplete = true; | 
					 | 
					 | 
					 | 
								wb->incomplete = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								wb->txns = 0; | 
					 | 
					 | 
					 | 
								wb->txns = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1796,17 +1806,9 @@ static void add_node_base(ckpool_t *ckp, json_t *val, bool trusted, int64_t clie | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							json_intcpy(&wb->txns, val, "txns"); | 
					 | 
					 | 
					 | 
							json_intcpy(&wb->txns, val, "txns"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							txnhashes = json_object_get(val, "txn_hashes"); | 
					 | 
					 | 
					 | 
							txnhashes = json_object_get(val, "txn_hashes"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (!rebuild_txns(ckp, sdata, wb, txnhashes)) { | 
					 | 
					 | 
					 | 
							if (!rebuild_txns(ckp, sdata, wb, txnhashes)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (!sdata->wbincomplete) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									sdata->wbincomplete = true; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									LOGWARNING("Unable to rebuild transactions to create workinfo, ignore displayed hashrate"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								free(wb); | 
					 | 
					 | 
					 | 
								free(wb); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return; | 
					 | 
					 | 
					 | 
								return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (sdata->wbincomplete) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								LOGWARNING("Successfully resumed rebuilding transactions into workinfo"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								sdata->wbincomplete = false; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						json_strdup(&wb->coinb1, val, "coinb1"); | 
					 | 
					 | 
					 | 
						json_strdup(&wb->coinb1, val, "coinb1"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						json_intcpy(&wb->coinb1len, val, "coinb1len"); | 
					 | 
					 | 
					 | 
						json_intcpy(&wb->coinb1len, val, "coinb1len"); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |