Mercurial > vim
changeset 8334:ad4b00bf2984 v7.4.1459
commit https://github.com/vim/vim/commit/e081e21f760bffc24ca98d5f9bbdb5f02e6aea79
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 28 Feb 2016 22:45:04 +0100 |
parents | c49db21a70e2 |
children | 13fa98c154ba |
files | src/channel.c src/version.c |
diffstat | 2 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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;