Skip to content

Commit 9800384

Browse files
authored
fix: close tls socket on encryption failure (#2724)
When we can't read the incoming certificate, ensure the underlying socket is destroyed.
1 parent fa83ee1 commit 9800384

File tree

1 file changed

+9
-3
lines changed
  • packages/connection-encrypter-tls/src

1 file changed

+9
-3
lines changed

packages/connection-encrypter-tls/src/tls.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,11 @@ export class TLS implements ConnectionEncrypter {
8181
})
8282
}
8383

84-
return new Promise((resolve, reject) => {
84+
return new Promise<SecuredConnection<Stream>>((resolve, reject) => {
8585
options?.signal?.addEventListener('abort', () => {
86-
socket.destroy(new HandshakeTimeoutError())
86+
const err = new HandshakeTimeoutError()
87+
socket.destroy(err)
88+
reject(err)
8789
})
8890

8991
const verifyRemote = (): void => {
@@ -109,10 +111,14 @@ export class TLS implements ConnectionEncrypter {
109111
socket.on('error', (err: Error) => {
110112
reject(err)
111113
})
112-
socket.once('secure', (evt) => {
114+
socket.once('secure', () => {
113115
this.log('verifying remote certificate')
114116
verifyRemote()
115117
})
116118
})
119+
.catch(err => {
120+
socket.destroy(err)
121+
throw err
122+
})
117123
}
118124
}

0 commit comments

Comments
 (0)