Allow for net reconnects
authorRyan Dahl <ry@tinyclouds.org>
Fri, 26 Feb 2010 20:13:49 +0000 (12:13 -0800)
committerRyan Dahl <ry@tinyclouds.org>
Fri, 26 Feb 2010 20:13:49 +0000 (12:13 -0800)
lib/net.js

index 21e114f..74ed72d 100644 (file)
@@ -71,11 +71,7 @@ function allocRecvBuffer () {
   recvBuffer.used = 0;
 }
 
-function Socket (peerInfo) {
-  process.EventEmitter.call(this);
-
-  var self = this;
-
+function initSocket (self) {
   self._readWatcher = ioWatchers.alloc();
   self._readWatcher.callback = function () {
     // If this is the first recv (recvBuffer doesn't exist) or we've used up
@@ -163,18 +159,24 @@ function Socket (peerInfo) {
   self._writeWatcher = ioWatchers.alloc();
   self._writeWatcher.callback = self._doFlush;
   self.writable = false;
+}
+
+function Socket (peerInfo) {
+  process.EventEmitter.call(this);
 
   if (peerInfo) {
-    self.fd = peerInfo.fd;
-    self.remoteAddress = peerInfo.remoteAddress;
-    self.remotePort = peerInfo.remotePort;
+    initSocket(this);
 
-    self._readWatcher.set(self.fd, true, false);
-    self._readWatcher.start();
-    self.readable = true;
+    this.fd = peerInfo.fd;
+    this.remoteAddress = peerInfo.remoteAddress;
+    this.remotePort = peerInfo.remotePort;
 
-    self._writeWatcher.set(self.fd, false, true);
-    self.writable = true;
+    this._readWatcher.set(this.fd, true, false);
+    this._readWatcher.start();
+    this.readable = true;
+
+    this._writeWatcher.set(this.fd, false, true);
+    this.writable = true;
   }
 };
 process.inherits(Socket, process.EventEmitter);
@@ -376,6 +378,8 @@ Socket.prototype.flush = function () {
 // stream.connect(80, 'nodejs.org') - TCP connect to port 80 on nodejs.org
 // stream.connect('/tmp/socket')    - UNIX connect to socket specified by path
 Socket.prototype.connect = function () {
+  initSocket(this);
+
   var self = this;
   if (self.fd) throw new Error('Socket already opened');