mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-24 02:55:40 +08:00
Corrected connect() timeout on *nix
This commit is contained in:
parent
d1d86ed9b3
commit
42ca640769
12
src/common.c
12
src/common.c
@ -707,11 +707,10 @@ int doconnect(struct clientparam * param){
|
|||||||
unsigned long ul = 1;
|
unsigned long ul = 1;
|
||||||
ioctlsocket(param->remsock, FIONBIO, &ul);
|
ioctlsocket(param->remsock, FIONBIO, &ul);
|
||||||
#else
|
#else
|
||||||
socklen_t us = sizeof(ul);
|
|
||||||
fcntl(param->remsock,F_SETFL,O_NONBLOCK);
|
fcntl(param->remsock,F_SETFL,O_NONBLOCK);
|
||||||
#endif
|
#endif
|
||||||
if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,SASIZE(¶m->sinsr))) {
|
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));
|
memset(fds, 0, sizeof(fds));
|
||||||
fds[0].fd = param->remsock;
|
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) {
|
if(so._poll(fds, 1, conf.timeouts[STRING_S]*1000) <= 0) {
|
||||||
return (13);
|
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);
|
size = sizeof(param->sinsl);
|
||||||
if(so._getsockname(param->remsock, (struct sockaddr *)¶m->sinsl, &size)==-1) {return (15);}
|
if(so._getsockname(param->remsock, (struct sockaddr *)¶m->sinsl, &size)==-1) {return (15);}
|
||||||
|
Loading…
Reference in New Issue
Block a user