# HG changeset patch # User Christian Brabandt # Date 1456695904 -3600 # Node ID ad4b00bf2984cdc2b584ec3123c52a71127f504b # Parent c49db21a70e29f543a52167e3a2567ae7ddb77c2 commit https://github.com/vim/vim/commit/e081e21f760bffc24ca98d5f9bbdb5f02e6aea79 Author: Bram Moolenaar Date: Sun Feb 28 22:33:46 2016 +0100 patch 7.4.1459 Problem: MS-Windows doesn't know socklen_t. Solution: Use previous method for WIN32. diff --git a/src/channel.c b/src/channel.c --- a/src/channel.c +++ b/src/channel.c @@ -681,8 +681,10 @@ channel_open( struct timeval tv; fd_set rfds; fd_set wfds; +#ifndef WIN32 int so_error = 0; socklen_t so_error_len = sizeof(so_error); +#endif FD_ZERO(&rfds); FD_SET(sd, &rfds); @@ -709,9 +711,12 @@ channel_open( return NULL; } +#ifdef WIN32 /* On Win32: select() is expected to work and wait for up to the - * waittime for the socket to be open. - * On Linux-like systems: See socket(7) for the behavior + * waittime for the socket to be open. */ + if (!FD_ISSET(sd, &wfds) || ret == 0) +#else + /* On Linux-like systems: See socket(7) for the behavior * After putting the socket in non-blocking mode, connect() will * return EINPROGRESS, select() will not wait (as if writing is * possible), need to use getsockopt() to check if the socket is @@ -725,9 +730,9 @@ channel_open( if (ret < 0 || (so_error != 0 && so_error != EWOULDBLOCK && so_error != ECONNREFUSED -#ifdef EINPROGRESS +# ifdef EINPROGRESS && so_error != EINPROGRESS -#endif +# endif )) { ch_errorn(channel, @@ -741,6 +746,7 @@ channel_open( } if (!FD_ISSET(sd, &wfds) || so_error != 0) +#endif { #ifndef WIN32 struct timeval end_tv; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -744,6 +744,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1459, +/**/ 1458, /**/ 1457,