mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-23 18:45:40 +08:00
better EINTR handling
This commit is contained in:
parent
7bae6c4525
commit
8975b00cce
@ -47,7 +47,7 @@ int socksendto(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufs
|
|||||||
if(res < 1) break;
|
if(res < 1) break;
|
||||||
res = so._sendto(sock, buf + sent, bufsize - sent, 0, sin, SASIZE(sin));
|
res = so._sendto(sock, buf + sent, bufsize - sent, 0, sin, SASIZE(sin));
|
||||||
if(res < 0) {
|
if(res < 0) {
|
||||||
if(errno != EAGAIN) break;
|
if(errno != EAGAIN && errno != EINTR) break;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
sent += res;
|
sent += res;
|
||||||
|
@ -130,7 +130,8 @@ int sockmap(struct clientparam * param, int timeo){
|
|||||||
}
|
}
|
||||||
res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver64 || (param->waitserver64 - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : (int)(param->waitserver64 - received), 0, (struct sockaddr*)¶m->sincr, sasize);
|
res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver64 || (param->waitserver64 - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : (int)(param->waitserver64 - received), 0, (struct sockaddr*)¶m->sincr, sasize);
|
||||||
if(res < 0) {
|
if(res < 0) {
|
||||||
if(errno != EAGAIN) return 96;
|
if(errno != EAGAIN && errno != EINTR) return 96;
|
||||||
|
if(errno == EINTR) usleep(SLEEPTIME);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
param->srvoffset += res;
|
param->srvoffset += res;
|
||||||
@ -155,7 +156,8 @@ int sockmap(struct clientparam * param, int timeo){
|
|||||||
}
|
}
|
||||||
res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient64 || (param->waitclient64 - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : (int)(param->waitclient64 - sent), 0, (struct sockaddr*)¶m->sins, sasize);
|
res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient64 || (param->waitclient64 - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : (int)(param->waitclient64 - sent), 0, (struct sockaddr*)¶m->sins, sasize);
|
||||||
if(res < 0) {
|
if(res < 0) {
|
||||||
if(errno != EAGAIN) return 97;
|
if(errno != EAGAIN && errno != EINTR) return 97;
|
||||||
|
if(errno == EINTR) usleep(SLEEPTIME);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
param->clioffset += res;
|
param->clioffset += res;
|
||||||
@ -180,7 +182,8 @@ int sockmap(struct clientparam * param, int timeo){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (res < 0){
|
if (res < 0){
|
||||||
if( errno != EAGAIN) return (94);
|
if(errno != EAGAIN && errno != EINTR) return 94;
|
||||||
|
if(errno == EINTR) usleep(SLEEPTIME);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
param->cliinbuf += res;
|
param->cliinbuf += res;
|
||||||
@ -210,7 +213,8 @@ int sockmap(struct clientparam * param, int timeo){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (res < 0){
|
if (res < 0){
|
||||||
if( errno != EAGAIN) return (93);
|
if(errno != EAGAIN && errno != EINTR) return 93;
|
||||||
|
if(errno == EINTR) usleep(SLEEPTIME);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
param->srvinbuf += res;
|
param->srvinbuf += res;
|
||||||
|
Loading…
Reference in New Issue
Block a user