summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-03-27 17:42:02 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-03-27 17:42:02 -0700
commitd2c5d7150253a5ae5613cac1d65e84b3aa5d33bc (patch)
tree66d2bb98925391859fd76ac42f7fb44102d04940
parentc231510f8b813eb73750f266dd18e836bc02d9cc (diff)
downloadinfinitytier-d2c5d7150253a5ae5613cac1d65e84b3aa5d33bc.tar.gz
infinitytier-d2c5d7150253a5ae5613cac1d65e84b3aa5d33bc.zip
Finally fixed TCP sockets.
-rw-r--r--node/SocketManager.cpp9
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;