Эх сурвалжийг харах

cmd/faucet: protect f.reqs with Rlock to prevent data race (#20669)

* cmd/faucet: add Rlock to protect f.reqs in apiHandler

* cmd/faucet: make a locked copy of f.reqs
Boqin Qin 5 жил өмнө
parent
commit
37531b1884
1 өөрчлөгдсөн 4 нэмэгдсэн , 1 устгасан
  1. 4 1
      cmd/faucet/faucet.go

+ 4 - 1
cmd/faucet/faucet.go

@@ -360,11 +360,14 @@ func (f *faucet) apiHandler(w http.ResponseWriter, r *http.Request) {
 		}
 	}
 	// Send over the initial stats and the latest header
+	f.lock.RLock()
+	reqs := f.reqs
+	f.lock.RUnlock()
 	if err = send(conn, map[string]interface{}{
 		"funds":    new(big.Int).Div(balance, ether),
 		"funded":   nonce,
 		"peers":    f.stack.Server().PeerCount(),
-		"requests": f.reqs,
+		"requests": reqs,
 	}, 3*time.Second); err != nil {
 		log.Warn("Failed to send initial stats to client", "err", err)
 		return