refactor(socket-utils): replace direct socket cleanup with centralized cleanupSocket utility across connection management
This commit is contained in:
@ -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}`, {
|
||||
|
Reference in New Issue
Block a user