Browse Source

net: defer DNS lookup error events to next tick

net.createConnection() creates a net.Socket object
and immediately calls net.Socket.connect() on it.

There are no event listeners registered yet so
defer the error event to the next tick.

Fixes #1202.
v0.7.4-release
Ben Noordhuis 14 years ago
parent
commit
fa378ee4d8
  1. 8
      lib/net_legacy.js
  2. 8
      lib/net_uv.js

8
lib/net_legacy.js

@ -728,7 +728,13 @@ Socket.prototype.connect = function() {
// TCP
require('dns').lookup(host, function(err, ip, addressType) {
if (err) {
self.emit('error', err);
// net.createConnection() creates a net.Socket object and
// immediately calls net.Socket.connect() on it (that's us).
// There are no event listeners registered yet so defer the
// error event to the next tick.
process.nextTick(function() {
self.emit('error', err);
});
} else {
addressType = addressType || 4;

8
lib/net_uv.js

@ -469,7 +469,13 @@ Socket.prototype.connect = function(port /* [host], [cb] */) {
debug("connect: find host " + host);
require('dns').lookup(host, function(err, ip, addressType) {
if (err) {
self.emit('error', err);
// net.createConnection() creates a net.Socket object and
// immediately calls net.Socket.connect() on it (that's us).
// There are no event listeners registered yet so defer the
// error event to the next tick.
process.nextTick(function() {
self.emit('error', err);
});
} else {
timers.active(self);

Loading…
Cancel
Save