on master help sign in
Fix bug #3: enforce per-peer forward cap on total outstanding forwards
commite6e5aa84d83f03ecbb4e0cb46918337092b90177 authoriko <mail@iko.soy> dateFri 29 May 2026, 18:39 (5 months ago) parent78d5d84
1 file changed+3−1
server.knot+3−1
server.knot+3−1
@@ -569,8 +569,10 @@ forwardQueuedToServer : PubkeyHex -> ServerName -> IO {rw *forwards, r *messages
569569forwardQueuedToServer = \pubkey server -> atomic (do
570570 msgs <- *messages
571571 fwds <- *forwards
572+ let existing = count (filter (\f -> f.toServer == server) fwds)
573+ let budget = max 0 (maxForwardsPerServer - existing)
572574 let candidates = filter (\m -> m.toKey == pubkey && not any (forwardMatches m.encryptedBlob server) fwds) msgs
573− let newFwds = map (\m -> {toServer: server, m.toKey, m.encryptedBlob, retries: 0}) (take maxForwardsPerServer candidates)
575+ let newFwds = map (\m -> {toServer: server, m.toKey, m.encryptedBlob, retries: 0}) (take budget candidates)
574576 *forwards = union fwds newFwds)
575577
576578-- ============================================