fix(connection): improve connection handling and timeouts
This commit is contained in:
@@ -254,11 +254,30 @@ export class SocketHandlerServer {
|
||||
|
||||
// Connect to the resolved target
|
||||
const backend = plugins.net.connect(port, host, () => {
|
||||
// Connection established — set idle timeout on both sides (5 min)
|
||||
socket.setTimeout(300_000);
|
||||
backend.setTimeout(300_000);
|
||||
|
||||
// Pipe bidirectionally
|
||||
socket.pipe(backend);
|
||||
backend.pipe(socket);
|
||||
});
|
||||
|
||||
// Connect timeout: if backend doesn't connect within 30s, destroy both
|
||||
backend.setTimeout(30_000);
|
||||
|
||||
backend.on('timeout', () => {
|
||||
logger.log('warn', `Dynamic forward timeout to ${host}:${port}`, { component: 'socket-handler-server' });
|
||||
backend.destroy();
|
||||
socket.destroy();
|
||||
});
|
||||
|
||||
socket.on('timeout', () => {
|
||||
logger.log('debug', `Dynamic forward client idle timeout`, { component: 'socket-handler-server' });
|
||||
socket.destroy();
|
||||
backend.destroy();
|
||||
});
|
||||
|
||||
backend.on('error', (err) => {
|
||||
logger.log('error', `Dynamic forward backend error: ${err.message}`, { component: 'socket-handler-server' });
|
||||
socket.destroy();
|
||||
|
||||
Reference in New Issue
Block a user