Clean up probe connection in case of EADDRINUSE for Unix socket listeners
This commit is contained in:
parent
4fb9a066b9
commit
b85e8ee61f
|
@ -56,7 +56,11 @@ spawn named 'NetDriver' {
|
||||||
} else {
|
} else {
|
||||||
retried = true;
|
retried = true;
|
||||||
const probe = new net.Socket();
|
const probe = new net.Socket();
|
||||||
|
function destroyProbe() {
|
||||||
|
try { probe.destroy() } catch (e) { console.error(e); }
|
||||||
|
}
|
||||||
probe.on('error', Dataspace.wrapExternal((e) => {
|
probe.on('error', Dataspace.wrapExternal((e) => {
|
||||||
|
destroyProbe();
|
||||||
if (e.code === 'ECONNREFUSED') {
|
if (e.code === 'ECONNREFUSED') {
|
||||||
fs.unlinkSync(path);
|
fs.unlinkSync(path);
|
||||||
server.listen(path);
|
server.listen(path);
|
||||||
|
@ -66,8 +70,8 @@ spawn named 'NetDriver' {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
probe.connect(path, Dataspace.wrapExternal((sock) => {
|
probe.connect(path, Dataspace.wrapExternal(() => {
|
||||||
try { sock.destroy() } catch (e) { console.error(e); }
|
destroyProbe();
|
||||||
throw err;
|
throw err;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue