Fix dataRadius in result of Portal ping JSON-RPC (#1553)
This commit is contained in:
parent
04137f1c98
commit
21ef655b9c
|
@ -81,10 +81,9 @@ proc installPortalApiHandlers*(
|
||||||
raise newException(ValueError, "Record not found in DHT lookup.")
|
raise newException(ValueError, "Record not found in DHT lookup.")
|
||||||
|
|
||||||
rpcServer.rpc("portal_" & network & "Ping") do(
|
rpcServer.rpc("portal_" & network & "Ping") do(
|
||||||
enr: Record) -> tuple[enrSeq: uint64, customPayload: string]:
|
enr: Record) -> tuple[enrSeq: uint64, dataRadius: UInt256]:
|
||||||
# TODO: Not fully according to spec:
|
# TODO: Not fully according to spec:
|
||||||
# - missing optional dataRadius
|
# - Missing optional dataRadius parameter
|
||||||
# - customPayload instead of dataRadius returned
|
|
||||||
let
|
let
|
||||||
node = toNodeWithAddress(enr)
|
node = toNodeWithAddress(enr)
|
||||||
pong = await p.ping(node)
|
pong = await p.ping(node)
|
||||||
|
@ -92,8 +91,18 @@ proc installPortalApiHandlers*(
|
||||||
if pong.isErr():
|
if pong.isErr():
|
||||||
raise newException(ValueError, $pong.error)
|
raise newException(ValueError, $pong.error)
|
||||||
else:
|
else:
|
||||||
let p = pong.get()
|
let
|
||||||
return (p.enrSeq, p.customPayload.asSeq().toHex())
|
p = pong.get()
|
||||||
|
# Note: the SSZ.decode cannot fail here as it has already been verified
|
||||||
|
# in the ping call.
|
||||||
|
decodedPayload =
|
||||||
|
try: SSZ.decode(p.customPayload.asSeq(), CustomPayload)
|
||||||
|
except MalformedSszError, SszSizeMismatchError:
|
||||||
|
raiseAssert("Already verified")
|
||||||
|
return (
|
||||||
|
p.enrSeq,
|
||||||
|
decodedPayload.dataRadius
|
||||||
|
)
|
||||||
|
|
||||||
rpcServer.rpc("portal_" & network & "FindNodes") do(
|
rpcServer.rpc("portal_" & network & "FindNodes") do(
|
||||||
enr: Record, distances: seq[uint16]) -> seq[Record]:
|
enr: Record, distances: seq[uint16]) -> seq[Record]:
|
||||||
|
|
Loading…
Reference in New Issue