dgram: reset bind state before emitting error

This was previously done inconsistently, sometimes before, sometimes
after emitting the event.

PR-URL: https://github.com/nodejs/node/pull/30210
Fixes: https://github.com/nodejs/node/issues/30209
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Anna Henningsen
2019-11-01 19:50:16 +01:00
parent d4b2cc7ead
commit 99e874e545

View File

@@ -240,8 +240,8 @@ Socket.prototype.bind = function(port_, address_ /* , callback */) {
}, (err) => {
// Callback to handle error.
const ex = errnoException(err, 'open');
this.emit('error', ex);
state.bindState = BIND_STATE_UNBOUND;
this.emit('error', ex);
});
return this;
}
@@ -309,8 +309,8 @@ Socket.prototype.bind = function(port_, address_ /* , callback */) {
}, (err) => {
// Callback to handle error.
const ex = exceptionWithHostPort(err, 'bind', ip, port);
this.emit('error', ex);
state.bindState = BIND_STATE_UNBOUND;
this.emit('error', ex);
});
} else {
if (!state.handle)
@@ -319,8 +319,8 @@ Socket.prototype.bind = function(port_, address_ /* , callback */) {
const err = state.handle.bind(ip, port || 0, flags);
if (err) {
const ex = exceptionWithHostPort(err, 'bind', ip, port);
this.emit('error', ex);
state.bindState = BIND_STATE_UNBOUND;
this.emit('error', ex);
// Todo: close?
return;
}