aboutsummaryrefslogtreecommitdiffstats
path: root/src/socketengine_iocp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/socketengine_iocp.cpp')
-rw-r--r--src/socketengine_iocp.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/socketengine_iocp.cpp b/src/socketengine_iocp.cpp
index 6a9490050..ab894299c 100644
--- a/src/socketengine_iocp.cpp
+++ b/src/socketengine_iocp.cpp
@@ -56,7 +56,7 @@ bool IOCPEngine::AddFd(EventHandler* eh)
/* Already an entry here */
if (ref[fake_fd])
- DelFd(ref[fake_fd]);
+ return false;
/* are we a listen socket? */
getsockopt(eh->GetFd(), SOL_SOCKET, SO_ACCEPTCONN, (char*)&is_accept, &opt_len);
@@ -71,6 +71,10 @@ bool IOCPEngine::AddFd(EventHandler* eh)
if (!CreateIoCompletionPort((HANDLE)eh->GetFd(), m_completionPort, completion_key, 0))
return false;
+ /* set up binding, increase set size */
+ ref[fake_fd] = eh;
+ ++CurrentSetSize;
+
/* setup initial events */
if(is_accept)
PostAcceptEvent(eh);
@@ -95,9 +99,6 @@ bool IOCPEngine::AddFd(EventHandler* eh)
return false;
}
- ++CurrentSetSize;
- ref[fake_fd] = eh;
-
return true;
}