Instead of EINPROGRESS WinSock2 returns WSAEWOULDBLOCK if a non-blocking connect(2) cannot be completed immediately.
Signed-off-by: Heiko Hund <heiko.h...@sophos.com> --- configure.ac | 2 ++ src/openvpn/socket.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index d3d974d..ba5dce1 100644 --- a/configure.ac +++ b/configure.ac @@ -617,6 +617,7 @@ m4_define( [setsockopt getsockopt getsockname poll]dnl ) if test "${WIN32}" = "yes"; then + AC_DEFINE([CONNECT_IN_PROGRESS], [WSAEWOULDBLOCK], [errno for incomplete non-blocking connect(2)]) m4_foreach( [F], m4_split(SOCKET_FUNCS SOCKET_OPT_FUNCS), @@ -624,6 +625,7 @@ if test "${WIN32}" = "yes"; then AC_DEFINE([UF], [1], [Win32 builtin]) ) else + AC_DEFINE([CONNECT_IN_PROGRESS], [EINPROGRESS], [errno for incomplete non-blocking connect(2)]) AC_CHECK_FUNCS( SOCKET_FUNCS, , diff --git a/src/openvpn/socket.c b/src/openvpn/socket.c index 54ebce7..b2d6bba 100644 --- a/src/openvpn/socket.c +++ b/src/openvpn/socket.c @@ -1165,7 +1165,7 @@ openvpn_connect (socket_descriptor_t sd, status = connect (sd, &remote->addr.sa, af_addr_size(remote->addr.sa.sa_family)); if (status) status = openvpn_errno_socket (); - if (status == EINPROGRESS) + if (status == CONNECT_IN_PROGRESS) { while (true) { -- 1.7.9.5