From 8de9ffd914580afee7ccc6c9b689d8290e680446 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Wed, 7 Jun 2017 12:43:22 -0700 Subject: [PATCH] test: fix flaky test-tls-socket-close Add error listener to ignore `ECONNRESET`. Makes test reliable while it still segfaults (as expected) on Node.js 7.7.3. It might not be possible to eliminate the probable race causing `ECONNRESET` without also eliminating the required segfault-inducing part of the test. (Or maybe it's totally possible. If you figure it out, hey cool, submit a pull request.) Fixes: https://github.com/nodejs/node/issues/13184 --- test/parallel/test-tls-socket-close.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/test/parallel/test-tls-socket-close.js b/test/parallel/test-tls-socket-close.js index a5d7410f49003c..25282ada9ed31a 100644 --- a/test/parallel/test-tls-socket-close.js +++ b/test/parallel/test-tls-socket-close.js @@ -32,12 +32,17 @@ const netServer = net.createServer((socket) => { netSocket = socket; }).listen(0, common.mustCall(function() { - // connect client - tls.connect({ + connectClient(netServer); +})); + +function connectClient(server) { + const tlsConnection = tls.connect({ host: 'localhost', - port: this.address().port, + port: server.address().port, rejectUnauthorized: false - }).write('foo', 'utf8', common.mustCall(() => { + }); + + tlsConnection.write('foo', 'utf8', common.mustCall(() => { assert(netSocket); netSocket.setTimeout(1, common.mustCall(() => { assert(tlsSocket); @@ -55,4 +60,10 @@ const netServer = net.createServer((socket) => { }, 1); })); })); -})); + tlsConnection.on('error', (e) => { + // Tolerate the occasional ECONNRESET. + // Ref: https://github.com/nodejs/node/issues/13184 + if (e.code !== 'ECONNRESET') + throw e; + }); +}