diff --git a/libp2p/protocols/pubsub/gossipsub.nim b/libp2p/protocols/pubsub/gossipsub.nim index 2d7b84cc9..baf483f18 100644 --- a/libp2p/protocols/pubsub/gossipsub.nim +++ b/libp2p/protocols/pubsub/gossipsub.nim @@ -285,7 +285,7 @@ proc grafted(g: GossipSub, p: PubSubPeer, topic: string) = debug "grafted", p do: - doAssert(false, "grafted: TopicInfo key not found for " & $p) + doAssert(false, "grafted: peerStats key not found for " & $p) proc pruned(g: GossipSub, p: PubSubPeer, topic: string) = g.peerStats.withValue(p, stats) do: @@ -685,7 +685,12 @@ proc handleGraft(g: GossipSub, # If they send us a graft before they send us a subscribe, what should # we do? For now, we add them to mesh but don't add them to gossipsub. + + if peer notin g.peerStats: + g.peerStats[peer] = PeerStats() + if topic in g.topics: + discard g.gossipsub.addPeer(topic, peer) if g.mesh.peers(topic) < GossipSubDHi: # In the spec, there's no mention of DHi here, but implicitly, a # peer will be removed from the mesh on next rebalance, so we don't want