Skip to content

Commit 5aef431

Browse files
committed
Check if socket is writeable before sending it data
1 parent cdb749d commit 5aef431

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/smtp/smtp.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,19 @@ export const checkSMTP = async (
2525

2626
socket.on('fail', msg => {
2727
r(createOutput('smtp', msg))
28-
socket.write(`quit\r\n`)
29-
socket.end()
30-
socket.destroy()
28+
if (socket.writable && !socket.destroyed) {
29+
socket.write(`quit\r\n`)
30+
socket.end()
31+
socket.destroy()
32+
}
3133
})
3234

3335
socket.on('success', () => {
34-
socket.write(`quit\r\n`)
35-
socket.end()
36-
socket.destroy()
36+
if (socket.writable && !socket.destroyed) {
37+
socket.write(`quit\r\n`)
38+
socket.end()
39+
socket.destroy()
40+
}
3741
r(createOutput())
3842
})
3943

@@ -45,7 +49,11 @@ export const checkSMTP = async (
4549
let i = 0
4650
socket.on('next', () => {
4751
if (i < 3) {
48-
socket.write(commands[i++])
52+
if (socket.writable) {
53+
socket.write(commands[i++])
54+
} else {
55+
socket.emit('fail', 'SMTP communication unexpectedly closed.')
56+
}
4957
} else {
5058
socket.emit('success')
5159
}

0 commit comments

Comments
 (0)