From b85e8ee61f22df7047943fde32cfbd840f5c96d3 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 12 Dec 2018 17:12:15 +0000 Subject: [PATCH] Clean up probe connection in case of EADDRINUSE for Unix socket listeners --- packages/driver-streams-node/src/net.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/driver-streams-node/src/net.js b/packages/driver-streams-node/src/net.js index 32fd715..da8317d 100644 --- a/packages/driver-streams-node/src/net.js +++ b/packages/driver-streams-node/src/net.js @@ -56,7 +56,11 @@ spawn named 'NetDriver' { } else { retried = true; const probe = new net.Socket(); + function destroyProbe() { + try { probe.destroy() } catch (e) { console.error(e); } + } probe.on('error', Dataspace.wrapExternal((e) => { + destroyProbe(); if (e.code === 'ECONNREFUSED') { fs.unlinkSync(path); server.listen(path); @@ -66,8 +70,8 @@ spawn named 'NetDriver' { throw err; } })); - probe.connect(path, Dataspace.wrapExternal((sock) => { - try { sock.destroy() } catch (e) { console.error(e); } + probe.connect(path, Dataspace.wrapExternal(() => { + destroyProbe(); throw err; })); }