proxy fixes
CI / Build & Test (push) Successful in 3m30s

This commit is contained in:
Raven Scott
2026-02-28 20:38:19 -05:00
parent 82c75b289e
commit c7e33691e4
+11
View File
@@ -29,6 +29,7 @@ function debugLog(...args) {
let proxyServer = null; let proxyServer = null;
let proxyPort = null; let proxyPort = null;
let proxyCertsDirOrCA = null; // saved so restart() can regenerate the cert let proxyCertsDirOrCA = null; // saved so restart() can regenerate the cert
const proxyConnections = new Set(); // track live sockets so stop() can force-close them
/** Resolver: hostname -> { host, port } or port number (then host defaults to 127.0.0.1) or null */ /** Resolver: hostname -> { host, port } or port number (then host defaults to 127.0.0.1) or null */
let getBackendForHostname = null; let getBackendForHostname = null;
@@ -98,6 +99,11 @@ function start(port, certsDirOrCA, callback, baseDomains) {
proxyServer = https.createServer(opts, onRequest); proxyServer = https.createServer(opts, onRequest);
// Forward WebSocket upgrade requests to the backend tunnel // Forward WebSocket upgrade requests to the backend tunnel
proxyServer.on('upgrade', onUpgrade); proxyServer.on('upgrade', onUpgrade);
// Track live connections so stop() can force-close them for instant restart
proxyServer.on('connection', (socket) => {
proxyConnections.add(socket);
socket.once('close', () => proxyConnections.delete(socket));
});
} catch (err) { } catch (err) {
if (process.stderr) process.stderr.write('[https-proxy] createServer threw: ' + err.message + '\n'); if (process.stderr) process.stderr.write('[https-proxy] createServer threw: ' + err.message + '\n');
done(err); done(err);
@@ -326,6 +332,11 @@ function stop(callback) {
const s = proxyServer; const s = proxyServer;
proxyServer = null; proxyServer = null;
proxyPort = null; proxyPort = null;
// Destroy all live connections so s.close() completes immediately
for (const socket of proxyConnections) {
try { socket.destroy(); } catch (_) {}
}
proxyConnections.clear();
s.close(() => { s.close(() => {
if (callback) callback(); if (callback) callback();
}); });