Fix PeerExchange rpc decode in order not to take response's status_code mandatory - for support old protocol implementation (#3059)

This commit is contained in:
NagyZoltanPeter 2024-09-25 11:51:50 +02:00 committed by GitHub
parent 941a3fe6a0
commit 5197fac47b
2 changed files with 8 additions and 2 deletions

View File

@ -217,7 +217,9 @@ proc populateEnrCache(wpx: WakuPeerExchange) =
proc updatePxEnrCache(wpx: WakuPeerExchange) {.async.} =
# try more aggressively to fill the cache at startup
while wpx.enrCache.len < MaxPeersCacheSize:
var attempts = 10
while wpx.enrCache.len < MaxPeersCacheSize and attempts > 0:
attempts -= 1
wpx.populateEnrCache()
await sleepAsync(5.seconds)

View File

@ -71,7 +71,11 @@ proc decode*(T: type PeerExchangeResponse, buffer: seq[byte]): ProtobufResult[T]
if ?pb.getField(10, status_code):
rpc.status_code = PeerExchangeResponseStatusCode.parse(status_code)
else:
return err(ProtobufError.missingRequiredField("status_code"))
# older peers may not support status_code field yet
if rpc.peerInfos.len() > 0:
rpc.status_code = PeerExchangeResponseStatusCode.SUCCESS
else:
rpc.status_code = PeerExchangeResponseStatusCode.SERVICE_UNAVAILABLE
var status_desc: string
if ?pb.getField(11, status_desc):