Compare commits

..

2 Commits

Author SHA1 Message Date
21f9801fb9 Bumped v7.15.0-canary.4 2021-09-30 08:29:41 +02:00
5a88a2f398 [Backport 7.x] Show socket local/remote address in case of ECONNRESET (#1556)
Co-authored-by: Tomas Della Vedova <delvedor@users.noreply.github.com>
2021-09-30 08:28:44 +02:00
3 changed files with 31 additions and 2 deletions

View File

@ -113,7 +113,14 @@ class Connection {
const onError = err => {
cleanListeners()
this._openRequests--
callback(new ConnectionError(err.message), null)
let message = err.message
if (err.code === 'ECONNRESET') {
/* istanbul ignore next */
const socket = request.socket || {}
/* istanbul ignore next */
message += ` - Local: ${socket.localAddress || 'unknown'}:${socket.localPort || 'unknown'}, Remote: ${socket.remoteAddress || 'unknown'}:${socket.remotePort || 'unknown'}`
}
callback(new ConnectionError(message), null)
}
const onAbort = () => {

View File

@ -12,7 +12,7 @@
},
"homepage": "http://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html",
"version": "7.15.0",
"versionCanary": "7.15.0-canary.3",
"versionCanary": "7.15.0-canary.4",
"keywords": [
"elasticsearch",
"elastic",

View File

@ -1084,3 +1084,25 @@ test('getIssuerCertificate detects invalid/malformed certificates', t => {
}
t.equal(getIssuerCertificate(socket), null)
})
test('Should show local/remote socket address in case of ECONNRESET', t => {
t.plan(2)
function handler (req, res) {
res.destroy()
}
buildServer(handler, ({ port }, server) => {
const connection = new Connection({
url: new URL(`http://localhost:${port}`)
})
connection.request({
path: '/hello',
method: 'GET'
}, (err, res) => {
t.ok(err instanceof ConnectionError)
t.match(err.message, /socket\shang\sup\s-\sLocal:\s127.0.0.1:\d+,\sRemote:\s127.0.0.1:\d+/)
server.stop()
})
})
})