update
This commit is contained in:
@@ -307,6 +307,18 @@ export class CommandHandler implements ICommandHandler {
|
|||||||
* @param response - Response to send
|
* @param response - Response to send
|
||||||
*/
|
*/
|
||||||
public sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
public sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
||||||
|
// Check if socket is still writable before attempting to write
|
||||||
|
if (socket.destroyed || socket.readyState !== 'open' || !socket.writable) {
|
||||||
|
SmtpLogger.debug(`Skipping response to closed/destroyed socket: ${response}`, {
|
||||||
|
remoteAddress: socket.remoteAddress,
|
||||||
|
remotePort: socket.remotePort,
|
||||||
|
destroyed: socket.destroyed,
|
||||||
|
readyState: socket.readyState,
|
||||||
|
writable: socket.writable
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
socket.write(`${response}${SMTP_DEFAULTS.CRLF}`);
|
socket.write(`${response}${SMTP_DEFAULTS.CRLF}`);
|
||||||
adaptiveLogger.logResponse(response, socket);
|
adaptiveLogger.logResponse(response, socket);
|
||||||
|
@@ -952,6 +952,18 @@ export class ConnectionManager implements IConnectionManager {
|
|||||||
* @param response - Response to send
|
* @param response - Response to send
|
||||||
*/
|
*/
|
||||||
private sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
private sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
||||||
|
// Check if socket is still writable before attempting to write
|
||||||
|
if (socket.destroyed || socket.readyState !== 'open' || !socket.writable) {
|
||||||
|
SmtpLogger.debug(`Skipping response to closed/destroyed socket: ${response}`, {
|
||||||
|
remoteAddress: socket.remoteAddress,
|
||||||
|
remotePort: socket.remotePort,
|
||||||
|
destroyed: socket.destroyed,
|
||||||
|
readyState: socket.readyState,
|
||||||
|
writable: socket.writable
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
socket.write(`${response}${SMTP_DEFAULTS.CRLF}`);
|
socket.write(`${response}${SMTP_DEFAULTS.CRLF}`);
|
||||||
adaptiveLogger.logResponse(response, socket);
|
adaptiveLogger.logResponse(response, socket);
|
||||||
|
@@ -1139,6 +1139,18 @@ SmtpLogger.debug(`Parsed email subject: ${subject}`, { subject });
|
|||||||
* @param response - Response message
|
* @param response - Response message
|
||||||
*/
|
*/
|
||||||
private sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
private sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
||||||
|
// Check if socket is still writable before attempting to write
|
||||||
|
if (socket.destroyed || socket.readyState !== 'open' || !socket.writable) {
|
||||||
|
SmtpLogger.debug(`Skipping response to closed/destroyed socket: ${response}`, {
|
||||||
|
remoteAddress: socket.remoteAddress,
|
||||||
|
remotePort: socket.remotePort,
|
||||||
|
destroyed: socket.destroyed,
|
||||||
|
readyState: socket.readyState,
|
||||||
|
writable: socket.writable
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
socket.write(`${response}${SMTP_DEFAULTS.CRLF}`);
|
socket.write(`${response}${SMTP_DEFAULTS.CRLF}`);
|
||||||
SmtpLogger.logResponse(response, socket);
|
SmtpLogger.logResponse(response, socket);
|
||||||
|
@@ -300,6 +300,18 @@ export class TlsHandler implements ITlsHandler {
|
|||||||
* @param response - Response message
|
* @param response - Response message
|
||||||
*/
|
*/
|
||||||
private sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
private sendResponse(socket: plugins.net.Socket | plugins.tls.TLSSocket, response: string): void {
|
||||||
|
// Check if socket is still writable before attempting to write
|
||||||
|
if (socket.destroyed || socket.readyState !== 'open' || !socket.writable) {
|
||||||
|
SmtpLogger.debug(`Skipping response to closed/destroyed socket: ${response}`, {
|
||||||
|
remoteAddress: socket.remoteAddress,
|
||||||
|
remotePort: socket.remotePort,
|
||||||
|
destroyed: socket.destroyed,
|
||||||
|
readyState: socket.readyState,
|
||||||
|
writable: socket.writable
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
socket.write(`${response}\r\n`);
|
socket.write(`${response}\r\n`);
|
||||||
SmtpLogger.logResponse(response, socket);
|
SmtpLogger.logResponse(response, socket);
|
||||||
|
Reference in New Issue
Block a user