]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Set errno to EINPROGRESS on Windows when the connect() call does not complete immedia...
authorattilamolnar <attilamolnar@hush.com>
Wed, 12 Sep 2012 23:53:42 +0000 (01:53 +0200)
committerattilamolnar <attilamolnar@hush.com>
Thu, 13 Sep 2012 12:16:11 +0000 (14:16 +0200)
This makes code that checks errno to determine whether connect() has succeeded or not work properly on Windows
Fixes #298 reported by @butaman

src/socketengine.cpp

index 72075dd499e7f1567140dcb6daeacfcff03abca0..ccaa71aed59dcfe92bef20d20d132c9fc45fa417 100644 (file)
@@ -208,7 +208,12 @@ int SocketEngine::SendTo(EventHandler* fd, const void *buf, size_t len, int flag
 
 int SocketEngine::Connect(EventHandler* fd, const sockaddr *serv_addr, socklen_t addrlen)
 {
-       return connect(fd->GetFd(), serv_addr, addrlen);
+       int ret = connect(fd->GetFd(), serv_addr, addrlen);
+#ifdef WINDOWS
+       if ((ret == SOCKET_ERROR) && (WSAGetLastError() == WSAEWOULDBLOCK))
+               errno = EINPROGRESS;
+#endif
+       return ret;
 }
 
 int SocketEngine::Shutdown(EventHandler* fd, int how)