mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-24 02:55:40 +08:00
Handle accept() errors more accurate
This commit is contained in:
parent
43da6cc32b
commit
95efeb8a93
@ -524,6 +524,7 @@ int MODULEMAINFUNC (int argc, char** argv){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if((conf.paused != srv.version) || (error < 0)) break;
|
if((conf.paused != srv.version) || (error < 0)) break;
|
||||||
|
error = 0;
|
||||||
if(!isudp){
|
if(!isudp){
|
||||||
size = sizeof(defparam.sincr);
|
size = sizeof(defparam.sincr);
|
||||||
if(iscbc){
|
if(iscbc){
|
||||||
@ -551,8 +552,47 @@ int MODULEMAINFUNC (int argc, char** argv){
|
|||||||
else {
|
else {
|
||||||
new_sock = so._accept(sock, (struct sockaddr*)&defparam.sincr, &size);
|
new_sock = so._accept(sock, (struct sockaddr*)&defparam.sincr, &size);
|
||||||
if(new_sock == INVALID_SOCKET){
|
if(new_sock == INVALID_SOCKET){
|
||||||
|
#ifdef _WIN32
|
||||||
|
switch(WSAGetLastError()){
|
||||||
|
case WSAEMFILE:
|
||||||
|
case WSAENOBUFS:
|
||||||
|
case WSAENETDOWN:
|
||||||
|
usleep(SLEEPTIME * 10);
|
||||||
|
break;
|
||||||
|
case WSAEINTR:
|
||||||
|
error = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
switch (errno){
|
||||||
|
#ifdef EMFILE
|
||||||
|
case EMFILE:
|
||||||
|
#endif
|
||||||
|
#ifdef ENFILE
|
||||||
|
case ENFILE:
|
||||||
|
#endif
|
||||||
|
#ifdef ENOBUFS
|
||||||
|
case ENOBUFS:
|
||||||
|
#endif
|
||||||
|
#ifdef ENOMEM
|
||||||
|
case ENOMEM:
|
||||||
|
#endif
|
||||||
|
usleep(SLEEPTIME * 10);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
nlog++;
|
||||||
|
if(error || nlog > 5000) {
|
||||||
sprintf((char *)buf, "accept(): %s", strerror(errno));
|
sprintf((char *)buf, "accept(): %s", strerror(errno));
|
||||||
if(!srv.silent)(*srv.logfunc)(&defparam, buf);
|
if(!srv.silent)(*srv.logfunc)(&defparam, buf);
|
||||||
|
nlog = 0;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user