on master help sign in
Fix bug #2: reject /messages batches exceeding maxBatchSize with 413 instead of silent truncation
commit78d5d84ec9afa5d6dc375cd9588951b2516b0ad3 authoriko <mail@iko.soy> dateFri 29 May 2026, 18:37 (5 months ago) parent3e555b1
1 file changed+4−3
server.knot+4−3
server.knot+4−3
@@ -747,8 +747,9 @@ handleSendMessages = \messages authorization clientIp -> do
747747 case auth of
748748 Nothing {} -> yield (Err {error: {status: 401, message: "unauthorized"}})
749749 Just {value: senderKey} -> do
750− let limited = take maxBatchSize messages
751− if any (\m -> m.to == senderKey) limited
750+ if count messages > maxBatchSize
751+ then yield (Err {error: {status: 413, message: "batch_too_large"}})
752+ else if any (\m -> m.to == senderKey) messages
752753 then yield (Err {error: {status: 400, message: "self_send"}})
753754 else do
754755 committed <- atomic (do
@@ -757,7 +758,7 @@ handleSendMessages = \messages authorization clientIp -> do
757758 m.to,
758759 m.encryptedBlob,
759760 remoteServers: collectPeers (filter (\p -> p.pubkey == m.to && p.expiresAt > t) pres) (\p -> p.server)
760− }) limited
761+ }) messages
761762 forEach staged (\c -> do
762763 appendMessage c.to c.encryptedBlob t
763764 when federationEnabled (do