Browse Source

Finally fixed TCP sockets.

Adam Ierymenko 11 years ago
parent
commit
d2c5d71502
1 changed files with 8 additions and 1 deletions
  1. 8 1
      node/SocketManager.cpp

+ 8 - 1
node/SocketManager.cpp

@@ -395,8 +395,13 @@ bool SocketManager::send(const InetAddress &to,bool tcp,const void *msg,unsigned
 		}
 
 		ts = SharedPtr<Socket>(new TcpSocket(this,s,connecting,to));
-		if (!ts->send(to,msg,msglen))
+		if (!ts->send(to,msg,msglen)) {
+			_fdSetLock.lock();
+			FD_CLR(s,&_readfds);
+			FD_CLR(s,&_writefds);
+			_fdSetLock.unlock();
 			return false;
+		}
 
 		{
 			Mutex::Lock _l(_tcpSockets_m);
@@ -408,6 +413,8 @@ bool SocketManager::send(const InetAddress &to,bool tcp,const void *msg,unsigned
 		if (connecting)
 			FD_SET(s,&_writefds);
 		_fdSetLock.unlock();
+
+		_updateNfds();
 		whack();
 
 		return true;