@@ -78,6 +78,7 @@ proc new*(
7878 bootstrapNodes: seq [(PeerId , seq [MultiAddress ])] = @ [],
7979 config: KadDHTConfig = KadDHTConfig .new (),
8080 rng: ref HmacDrbgContext = newRng (),
81+ client: bool = false ,
8182): T {.raises : [].} =
8283 var rtable = RoutingTable .new (
8384 switch.peerInfo.peerId.toKey (),
@@ -94,40 +95,41 @@ proc new*(
9495 )
9596
9697 kad.codec = KadCodec
97- kad.handler = proc (
98- conn: Connection , proto: string
99- ) {.async : (raises: [CancelledError ]).} =
100- defer :
101- await conn.close ()
102- while not conn.atEof:
103- let buf =
104- try :
105- await conn.readLp (MaxMsgSize )
106- except LPStreamEOFError :
98+ if not client:
99+ kad.handler = proc (
100+ conn: Connection , proto: string
101+ ) {.async : (raises: [CancelledError ]).} =
102+ defer :
103+ await conn.close ()
104+ while not conn.atEof:
105+ let buf =
106+ try :
107+ await conn.readLp (MaxMsgSize )
108+ except LPStreamEOFError :
109+ return
110+ except LPStreamError as exc:
111+ debug " Read error when handling kademlia RPC" , conn = conn, err = exc.msg
112+ return
113+ let msg = Message .decode (buf).valueOr:
114+ debug " Failed to decode message" , err = error
107115 return
108- except LPStreamError as exc:
109- debug " Read error when handling kademlia RPC" , conn = conn, err = exc.msg
116+
117+ case msg.msgType
118+ of MessageType .findNode:
119+ await kad.handleFindNode (conn, msg)
120+ of MessageType .putValue:
121+ await kad.handlePutValue (conn, msg)
122+ of MessageType .getValue:
123+ await kad.handleGetValue (conn, msg)
124+ of MessageType .addProvider:
125+ await kad.handleAddProvider (conn, msg)
126+ of MessageType .getProviders:
127+ await kad.handleGetProviders (conn, msg)
128+ of MessageType .ping:
129+ await kad.handlePing (conn, msg)
130+ else :
131+ error " Unhandled kad-dht message type" , msg = msg
110132 return
111- let msg = Message .decode (buf).valueOr:
112- debug " Failed to decode message" , err = error
113- return
114-
115- case msg.msgType
116- of MessageType .findNode:
117- await kad.handleFindNode (conn, msg)
118- of MessageType .putValue:
119- await kad.handlePutValue (conn, msg)
120- of MessageType .getValue:
121- await kad.handleGetValue (conn, msg)
122- of MessageType .addProvider:
123- await kad.handleAddProvider (conn, msg)
124- of MessageType .getProviders:
125- await kad.handleGetProviders (conn, msg)
126- of MessageType .ping:
127- await kad.handlePing (conn, msg)
128- else :
129- error " Unhandled kad-dht message type" , msg = msg
130- return
131133 return kad
132134
133135method start * (kad: KadDHT ) {.async : (raises: [CancelledError ]).} =
0 commit comments