From 0133c325801970f326d46a8cad03f0ab85ac01ec Mon Sep 17 00:00:00 2001 From: Sammy Libre Date: Fri, 1 Jul 2016 19:46:48 +0500 Subject: [PATCH] Update job cache only on new job --- proxy/blocks.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/proxy/blocks.go b/proxy/blocks.go index 8612b14..a21f3c9 100644 --- a/proxy/blocks.go +++ b/proxy/blocks.go @@ -47,14 +47,17 @@ func (s *ProxyServer) fetchBlockTemplate() { log.Printf("Error while refreshing block template on %s: %s", rpc.Name, err) return } - t := s.currentBlockTemplate() - + // No need to update, we have fresh job + if t != nil && t.Header == reply[0] { + return + } height, diff, err := s.fetchPendingBlock() if err != nil { log.Printf("Error while refreshing pending block on %s: %s", rpc.Name, err) return } + newTemplate := BlockTemplate{ Header: reply[0], Seed: reply[1], @@ -67,17 +70,13 @@ func (s *ProxyServer) fetchBlockTemplate() { newTemplate.headers[reply[0]] = heightDiffPair{diff: util.TargetHexToDiff(reply[2]), height: height} if t != nil { for k, v := range t.headers { - if v.height >= height-maxBacklog { + if v.height > height-maxBacklog { newTemplate.headers[k] = v } } } s.blockTemplate.Store(&newTemplate) - - if newTemplate.Header != t.Header { - log.Printf("New block to mine on %s at height: %d / %s", rpc.Name, height, reply[0][0:10]) - } - return + log.Printf("New block to mine on %s at height %d / %s", rpc.Name, height, reply[0][0:10]) } func (s *ProxyServer) fetchPendingBlock() (uint64, *big.Int, error) {