From a6e7caa76bbf964b191f1332387982f3d58865f5 Mon Sep 17 00:00:00 2001 From: Yonle <yonle@lecturify.net> Date: Sun, 18 Feb 2024 19:37:59 +0700 Subject: [PATCH] bouncer: only start connect after first relay command. Signed-off-by: Yonle <yonle@lecturify.net> --- bouncer.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/bouncer.js b/bouncer.js index b796845..25fd78d 100644 --- a/bouncer.js +++ b/bouncer.js @@ -20,6 +20,7 @@ module.exports = (ws, req, onClose) => { let query = querystring.parse(req.url.slice(2)); let authKey = null; let authorized = true; + let sessStarted = false; let lastEvent = Date.now(); ws.ip = req.headers["x-forwarded-for"]?.split(",")[0] || req.socket.address()?.address; ws.relays = new Set(); // Set() of connected relays. @@ -77,6 +78,11 @@ module.exports = (ws, req, onClose) => { return ws.send(JSON.stringify(["OK", data[1]?.id, false, "rate-limited: request too fast."])); } + if (!ws.relays.size && !sessStarted) { + newsess(ws); + sessStarted = true; + } + lastEvent = Date.now(); ws.my_events.add(data[1]); @@ -107,6 +113,12 @@ module.exports = (ws, req, onClose) => { }); } } + + if (!ws.relays.size && !sessStarted) { + newsess(ws); + sessStarted = true; + } + ws.subs.set(origID, filters); ws.events.set(origID, new Set()); ws.pause_subs.delete(origID); @@ -142,7 +154,6 @@ module.exports = (ws, req, onClose) => { ws.pubkey = data[1].pubkey; console.log(process.pid, "---", ws.ip, "successfully authorized as", ws.pubkey, private_keys[ws.pubkey] ? "(admin)" : "(user)"); if (authorized) return; - newsess(ws); authorized = true; lastEvent = Date.now(); } @@ -168,8 +179,6 @@ module.exports = (ws, req, onClose) => { sock.terminate(); } }); - - if (authorized) newsess(ws); } // WS - New session for client $id