From 703e67e5211722749efc08432a8fb1023df8241c Mon Sep 17 00:00:00 2001 From: Zsolt Felfoldi Date: Sun, 3 Nov 2019 01:21:16 +0100 Subject: [PATCH] les: keep pos balance entry if meta field is not empty --- les/clientpool.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/les/clientpool.go b/les/clientpool.go index 78b24fe3e7..ac9a2e3bc9 100644 --- a/les/clientpool.go +++ b/les/clientpool.go @@ -451,7 +451,9 @@ func (f *clientPool) balanceExhausted(id enode.ID) { c.capacity = f.freeClientCap c.peer.updateCapacity(c.capacity) } - f.ndb.delPB(id) + pb := f.ndb.getOrNewPB(id) + pb.value = 0 + f.ndb.setPB(id, pb) if f.eventHook != nil { f.eventHook("balanceExhausted", c) } @@ -740,6 +742,10 @@ func (db *nodeDB) getOrNewPB(id enode.ID) posBalance { } func (db *nodeDB) setPB(id enode.ID, b posBalance) { + if b.value == 0 && len(b.meta) == 0 { + db.delPB(id) + return + } key := db.key(id.Bytes(), false) enc, err := rlp.EncodeToBytes(&(b)) if err != nil {