From 1a0a6755b116214381567804514f01af091e3ca8 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 17 Mar 2014 16:18:44 -0700 Subject: UDP socket implementation. --- node/SocketManager.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'node/SocketManager.cpp') diff --git a/node/SocketManager.cpp b/node/SocketManager.cpp index 36def1e1..825d107e 100644 --- a/node/SocketManager.cpp +++ b/node/SocketManager.cpp @@ -434,10 +434,20 @@ void SocketManager::poll(unsigned long timeout) } } for(std::vector< SharedPtr >::iterator s(ts.begin());s!=ts.end();++s) { - if (FD_ISSET((*s)->_sock,&rfds)) - (*s)->notifyAvailableForRead(*s,this); - if (FD_ISSET((*s)->_sock,&wfds)) - (*s)->notifyAvailableForWrite(*s,this); + if (FD_ISSET((*s)->_sock,&wfds)) { + if (!(*s)->notifyAvailableForWrite(*s,this)) { + Mutex::Lock _l2(_tcpSockets_m); + _tcpSockets.erase(((TcpSocket *)s->ptr())->_remote); + continue; + } + } + if (FD_ISSET((*s)->_sock,&rfds)) { + if (!(*s)->notifyAvailableForRead(*s,this)) { + Mutex::Lock _l2(_tcpSockets_m); + _tcpSockets.erase(((TcpSocket *)s->ptr())->_remote); + continue; + } + } } } -- cgit v1.2.3