fix(PortProxy): Enhance connection cleanup handling in PortProxy

This commit is contained in:
Philipp Kunz 2025-03-01 20:31:50 +00:00
parent d647e77cdf
commit a5a7781c17
3 changed files with 13 additions and 2 deletions

View File

@ -1,5 +1,11 @@
# Changelog
## 2025-03-01 - 3.20.2 - fix(PortProxy)
Enhance connection cleanup handling in PortProxy
- Add checks to ensure timers are reset only if outgoing socket is active
- Prevent setting outgoingActive if the connection is already closed
## 2025-03-01 - 3.20.1 - fix(PortProxy)
Improve IP allowance check for forced domains

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@push.rocks/smartproxy',
version: '3.20.1',
version: '3.20.2',
description: 'A powerful proxy package that effectively handles high traffic, with features such as SSL/TLS support, port proxying, WebSocket handling, and dynamic routing with authentication options.'
}

View File

@ -354,6 +354,7 @@ export class PortProxy {
// Initialize a cleanup timer for max connection lifetime.
if (this.settings.maxConnectionLifetime) {
// Flags to track if data was seen from each side.
let incomingActive = false;
let outgoingActive = false;
const resetCleanupTimer = () => {
@ -370,15 +371,19 @@ export class PortProxy {
resetCleanupTimer();
// Only reset the timer if outgoing socket is still active.
socket.on('data', () => {
incomingActive = true;
if (incomingActive && outgoingActive) {
// Check if outgoing has not been closed before resetting timer.
if (!connectionRecord.outgoingClosedTime && incomingActive && outgoingActive) {
resetCleanupTimer();
incomingActive = false;
outgoingActive = false;
}
});
targetSocket.on('data', () => {
// If outgoing is closed, do not set outgoingActive.
if (connectionRecord.outgoingClosedTime) return;
outgoingActive = true;
if (incomingActive && outgoingActive) {
resetCleanupTimer();