mirror of
https://github.com/logos-messaging/nim-sds.git
synced 2026-01-02 14:13:07 +00:00
protobuf.nim enhancement to avoid crash due to bad handled Result object
This aims to avoid the error that appeared in status-go's test-functional: ERROR root:statusgo_container.py:146 Container health check failed: Container is not running. Status: exited. Logs (last 10 lines): /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-chronos/chronos/internal/asyncfutures.nim(624) pollFor /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-chronos/chronos/internal/asyncengine.nim(150) poll /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/library/sds_thread/sds_thread.nim(45) runSds /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-chronos/chronos/internal/asyncmacro.nim(71) process /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/library/sds_thread/inter_thread_communication/requests/sds_message_request.nim(65) process /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/src/reliability.nim(190) unwrapReceivedMessage /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/src/protobuf.nim(55) extractChannelId /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-results/results.nim(445) value /go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-results/results.nim(433) raiseResultDefect Error: unhandled exception: Trying to access value with err Result: BadWireType [ResultDefect]
This commit is contained in:
parent
26e13dd87a
commit
c82dad828a
@ -52,7 +52,9 @@ proc extractChannelId*(data: seq[byte]): Result[SdsChannelID, ReliabilityError]
|
|||||||
try:
|
try:
|
||||||
let pb = initProtoBuffer(data)
|
let pb = initProtoBuffer(data)
|
||||||
var channelId: SdsChannelID
|
var channelId: SdsChannelID
|
||||||
if not pb.getField(4, channelId).get():
|
let fieldOk = pb.getField(4, channelId).valueOr:
|
||||||
|
return err(ReliabilityError.reDeserializationError)
|
||||||
|
if not fieldOk:
|
||||||
return err(ReliabilityError.reDeserializationError)
|
return err(ReliabilityError.reDeserializationError)
|
||||||
ok(channelId)
|
ok(channelId)
|
||||||
except:
|
except:
|
||||||
@ -99,9 +101,19 @@ proc deserializeBloomFilter*(data: seq[byte]): Result[BloomFilter, ReliabilityEr
|
|||||||
var cap, errRate, kHashes, mBits: uint64
|
var cap, errRate, kHashes, mBits: uint64
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if not pb.getField(1, bytes).get() or not pb.getField(2, cap).get() or
|
let
|
||||||
not pb.getField(3, errRate).get() or not pb.getField(4, kHashes).get() or
|
field1_Ok = pb.getField(1, bytes).valueOr:
|
||||||
not pb.getField(5, mBits).get():
|
return err(ReliabilityError.reDeserializationError)
|
||||||
|
field2_Ok = pb.getField(2, cap).valueOr:
|
||||||
|
return err(ReliabilityError.reDeserializationError)
|
||||||
|
field3_Ok = pb.getField(3, errRate).valueOr:
|
||||||
|
return err(ReliabilityError.reDeserializationError)
|
||||||
|
field4_Ok = pb.getField(4, kHashes).valueOr:
|
||||||
|
return err(ReliabilityError.reDeserializationError)
|
||||||
|
field5_Ok = pb.getField(5, mBits).valueOr:
|
||||||
|
return err(ReliabilityError.reDeserializationError)
|
||||||
|
|
||||||
|
if not field1_Ok or not field2_Ok or not field3_Ok or not field4_Ok or not field5_Ok:
|
||||||
return err(ReliabilityError.reDeserializationError)
|
return err(ReliabilityError.reDeserializationError)
|
||||||
|
|
||||||
# Convert bytes back to intArray
|
# Convert bytes back to intArray
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user