diff --git a/nimbus/sync/handlers.nim b/nimbus/sync/handlers.nim index deca0d647..6f3a81a0b 100644 --- a/nimbus/sync/handlers.nim +++ b/nimbus/sync/handlers.nim @@ -172,8 +172,11 @@ proc cleanupKnownByPeer(ctx: EthWireRef) = proc addToKnownByPeer(ctx: EthWireRef, txHashes: openArray[Hash256], peer: Peer) = var map: HashToTime - if not ctx.knownByPeer.take(peer, map): + ctx.knownByPeer.withValue(peer, val) do: + map = val[] + do: map = newTable[Hash256, Time]() + ctx.knownByPeer[peer] = map for txHash in txHashes: if txHash notin map: @@ -184,8 +187,11 @@ proc addToKnownByPeer(ctx: EthWireRef, peer: Peer, newHashes: var seq[Hash256]) = var map: HashToTime - if not ctx.knownByPeer.take(peer, map): + ctx.knownByPeer.withValue(peer, val) do: + map = val[] + do: map = newTable[Hash256, Time]() + ctx.knownByPeer[peer] = map newHashes = newSeqOfCap[Hash256](txHashes.len) for txHash in txHashes: diff --git a/nimbus/sync/legacy.nim b/nimbus/sync/legacy.nim index 5a4549054..e1ba24b9d 100644 --- a/nimbus/sync/legacy.nim +++ b/nimbus/sync/legacy.nim @@ -117,12 +117,15 @@ proc cleanupKnownByPeer(ctx: LegacySyncRef) = proc addToKnownByPeer(ctx: LegacySyncRef, blockHash: Hash256, peer: Peer): bool = + var map: HashToTime - if not ctx.knownByPeer.take(peer, map): - map = newTable[Hash256, Time]() - result = false - else: + ctx.knownByPeer.withValue(peer, val) do: + map = val[] result = true + do: + map = newTable[Hash256, Time]() + ctx.knownByPeer[peer] = map + result = false map[blockHash] = getTime()