From 64749963bebdc55e4d3fdc3dc696ca6e6d8a9b3c Mon Sep 17 00:00:00 2001 From: Yonle Date: Sun, 18 Feb 2024 12:45:26 +0700 Subject: [PATCH] bouncer: improve the acceptKinds Signed-off-by: Yonle --- bouncer.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/bouncer.js b/bouncer.js index da2695d..396353d 100644 --- a/bouncer.js +++ b/bouncer.js @@ -96,12 +96,16 @@ module.exports = (ws, req, onClose) => { let filter = mergeFilters(...filters); for (const fn in filters) { - if (!Array.isArray(filters[fn].kinds)) continue; - filters[fn].kinds = filters[fn].kinds?.filter(kind => { - if (ws.rejectKinds && ws.rejectKinds.includes(kind)) return false; - if (ws.acceptKinds && !ws.acceptKinds.includes(kind)) return true; - return true; - }); + if (!Array.isArray(filters[fn].kinds)) { + filters[fn].kinds = ws.acceptKinds; + continue; + } else { + filters[fn].kinds = filters[fn].kinds?.filter(kind => { + if (ws.rejectKinds && ws.rejectKinds.includes(kind)) return false; + if (ws.acceptKinds && !ws.acceptKinds.includes(kind)) return true; + return true; + }); + } } ws.subs.set(origID, filters); ws.events.set(origID, new Set()); @@ -225,6 +229,8 @@ function newConn(addr, client, reconn_t = 0) { data[1] = client.subalias.get(data[1]); if (client.pause_subs.has(data[1])) return; + if (client.rejectKinds && client.rejectKinds.includes(data[2]?.id)) return; + const filters = client.subs.get(data[1]); if (!matchFilters(filters, data[2])) return;