From 42ca640769077179205587b1b54d0fa0cd06dc2e Mon Sep 17 00:00:00 2001 From: z3apa3a <3proxy@3proxy.ru> Date: Thu, 22 Dec 2016 17:31:17 +0300 Subject: [PATCH] Corrected connect() timeout on *nix --- src/common.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/common.c b/src/common.c index 09b4e96..7ad2499 100644 --- a/src/common.c +++ b/src/common.c @@ -707,11 +707,10 @@ int doconnect(struct clientparam * param){ unsigned long ul = 1; ioctlsocket(param->remsock, FIONBIO, &ul); #else - socklen_t us = sizeof(ul); fcntl(param->remsock,F_SETFL,O_NONBLOCK); #endif if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,SASIZE(¶m->sinsr))) { - if(errno != EAGAIN) return (13); + if(errno != EAGAIN && errno != EINPROGRESS) return (13); } memset(fds, 0, sizeof(fds)); fds[0].fd = param->remsock; @@ -719,15 +718,6 @@ int doconnect(struct clientparam * param){ if(so._poll(fds, 1, conf.timeouts[STRING_S]*1000) <= 0) { return (13); } -#ifndef _WIN32 -#ifdef SO_ERROR - getsockopt(param->remsock, SOL_SOCKET, SO_ERROR, &ul, &us); - - if (ul != 0) { - return (13); - } -#endif -#endif } size = sizeof(param->sinsl); if(so._getsockname(param->remsock, (struct sockaddr *)¶m->sinsl, &size)==-1) {return (15);}