Skip to content

Commit

Permalink
fix: check max message size in validator according to configured value (
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielmer authored Feb 14, 2024
1 parent d00065e commit 731dfcb
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 14 deletions.
4 changes: 2 additions & 2 deletions tests/wakunode_rest/test_rest_relay.nim
Original file line number Diff line number Diff line change
Expand Up @@ -523,7 +523,7 @@ suite "Waku v2 Rest API - Relay":
check:
response.status == 400
$response.contentType == $MIMETYPE_TEXT
response.data == fmt"Failed to publish: Message size exceeded maximum of {DefaultMaxWakuMessageSizeStr}"
response.data == fmt"Failed to publish: Message size exceeded maximum of {MaxWakuMessageSize} bytes"

await restServer.stop()
await restServer.closeWait()
Expand Down Expand Up @@ -567,7 +567,7 @@ suite "Waku v2 Rest API - Relay":
check:
response.status == 400
$response.contentType == $MIMETYPE_TEXT
response.data == fmt"Failed to publish: Message size exceeded maximum of {DefaultMaxWakuMessageSizeStr}"
response.data == fmt"Failed to publish: Message size exceeded maximum of {MaxWakuMessageSize} bytes"

await restServer.stop()
await restServer.closeWait()
Expand Down
18 changes: 6 additions & 12 deletions waku/waku_relay/protocol.nim
Original file line number Diff line number Diff line change
Expand Up @@ -216,21 +216,15 @@ proc generateOrderedValidator*(w: WakuRelay): auto {.gcsafe.} =
return ValidationResult.Accept
return wrappedValidator

proc isValidSize(message: WakuMessage): Future[Result[void, string]] {.async.} =
let messageSizeBytes = uint64(message.encode().buffer.len)

if(messageSizeBytes > MaxWakuMessageSize):
let message = fmt"Message size exceeded maximum of {DefaultMaxWakuMessageSizeStr}"
debug "Invalid Waku Message", error=message
return err(message)

return ok()

proc validateMessage*(w: WakuRelay, pubsubTopic: string, msg: WakuMessage):
Future[Result[void, string]] {.async.} =

(await msg.isValidSize()).isOkOr:
return err(error)
let messageSizeBytes = msg.encode().buffer.len

if messageSizeBytes > w.maxMessageSize:
let message = fmt"Message size exceeded maximum of {w.maxMessageSize} bytes"
debug "Invalid Waku Message", error=message
return err(message)

for (validator, message) in w.wakuValidators:
let validatorRes = await validator(pubsubTopic, msg)
Expand Down

0 comments on commit 731dfcb

Please sign in to comment.