Permalink
Browse files

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.
  • Loading branch information...
1 parent c318bd6 commit 60fd7e6aa97cf3b05ed8d30cca835a131b3b9016 @bnoordhuis committed Aug 9, 2011
Showing with 14 additions and 2 deletions.
  1. +7 −1 lib/net_legacy.js
  2. +7 −1 lib/net_uv.js
View
@@ -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 {
timers.active(self);
self.type = addressType == 4 ? 'tcp4' : 'tcp6';
View
@@ -449,7 +449,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);

0 comments on commit 60fd7e6

Please sign in to comment.