diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-03-27 17:42:02 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-03-27 17:42:02 -0700 |
commit | d2c5d7150253a5ae5613cac1d65e84b3aa5d33bc (patch) | |
tree | 66d2bb98925391859fd76ac42f7fb44102d04940 | |
parent | c231510f8b813eb73750f266dd18e836bc02d9cc (diff) | |
download | infinitytier-d2c5d7150253a5ae5613cac1d65e84b3aa5d33bc.tar.gz infinitytier-d2c5d7150253a5ae5613cac1d65e84b3aa5d33bc.zip |
Finally fixed TCP sockets.
-rw-r--r-- | node/SocketManager.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/node/SocketManager.cpp b/node/SocketManager.cpp index f81faf47..659f448c 100644 --- a/node/SocketManager.cpp +++ b/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; |