From f27609feb8adfdcb7fc9e1a2efacc788778b4db6 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 16 Mar 2025 17:51:07 -0500 Subject: [PATCH] Set a max subscriptions size per connection --- packages/ditto/controllers/nostr/relay.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/ditto/controllers/nostr/relay.ts b/packages/ditto/controllers/nostr/relay.ts index 7a10b29f..3690b61e 100644 --- a/packages/ditto/controllers/nostr/relay.ts +++ b/packages/ditto/controllers/nostr/relay.ts @@ -153,6 +153,11 @@ function connectStream(socket: WebSocket, ip: string | undefined, opts: ConnectS async function handleReq([_, subId, ...filters]: NostrClientREQ): Promise { if (rateLimited(limiters.req)) return; + if (controllers.size > 20) { + send(['CLOSED', subId, 'error: too many subscriptions']); + return; + } + const controller = new AbortController(); controllers.get(subId)?.abort(); controllers.set(subId, controller);