refactor(socket-utils): replace direct socket cleanup with centralized cleanupSocket utility across connection management

This commit is contained in:
2025-06-01 08:02:32 +00:00
parent eb2e67fecc
commit bed1a76537
5 changed files with 19 additions and 58 deletions

View File

@ -4,6 +4,7 @@ import { SecurityManager } from './security-manager.js';
import { TimeoutManager } from './timeout-manager.js';
import { logger } from '../../core/utils/logger.js';
import { LifecycleComponent } from '../../core/utils/lifecycle-component.js';
import { cleanupSocket } from '../../core/utils/socket-utils.js';
/**
* Manages connection lifecycle, tracking, and cleanup with performance optimizations
@ -278,10 +279,10 @@ export class ConnectionManager extends LifecycleComponent {
}
// Handle socket cleanup without delay
this.cleanupSocketImmediate(record, 'incoming', record.incoming);
cleanupSocket(record.incoming, `${record.id}-incoming`);
if (record.outgoing) {
this.cleanupSocketImmediate(record, 'outgoing', record.outgoing);
cleanupSocket(record.outgoing, `${record.id}-outgoing`);
}
// Clear pendingData to avoid memory leaks
@ -313,23 +314,6 @@ export class ConnectionManager extends LifecycleComponent {
}
}
/**
* Helper method to clean up a socket immediately
*/
private cleanupSocketImmediate(record: IConnectionRecord, side: 'incoming' | 'outgoing', socket: plugins.net.Socket): void {
try {
if (!socket.destroyed) {
socket.destroy();
}
} catch (err) {
logger.log('error', `Error destroying ${side} socket: ${err}`, {
connectionId: record.id,
side,
error: err,
component: 'connection-manager'
});
}
}
/**
* Creates a generic error handler for incoming or outgoing sockets
@ -552,19 +536,13 @@ export class ConnectionManager extends LifecycleComponent {
record.cleanupTimer = undefined;
}
// Immediate destruction
// Immediate destruction using socket-utils
if (record.incoming) {
record.incoming.removeAllListeners();
if (!record.incoming.destroyed) {
record.incoming.destroy();
}
cleanupSocket(record.incoming, `${record.id}-incoming-shutdown`);
}
if (record.outgoing) {
record.outgoing.removeAllListeners();
if (!record.outgoing.destroyed) {
record.outgoing.destroy();
}
cleanupSocket(record.outgoing, `${record.id}-outgoing-shutdown`);
}
} catch (err) {
logger.log('error', `Error during connection cleanup: ${err}`, {