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);