diff --git a/node/SocketManager.cpp b/node/SocketManager.cpp index f81faf474..659f448c1 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(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;