set linger close to setsockopt

This commit is contained in:
Vladimir Dubrovin 2022-12-23 17:58:15 +03:00
parent c716c67da2
commit 862405bdfd

View File

@ -551,6 +551,8 @@ int MODULEMAINFUNC (int argc, char** argv){
if(inetd) {
fcntl(0,F_SETFL,O_NONBLOCK | fcntl(0,F_GETFL));
if(!isudp){
lg.l_onoff = 1;
lg.l_linger = conf.timeouts[STRING_L];
so._setsockopt(0, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
so._setsockopt(0, SOL_SOCKET, SO_OOBINLINE, (unsigned char *)&opt, sizeof(int));
}
@ -592,8 +594,6 @@ int MODULEMAINFUNC (int argc, char** argv){
if(srv.srvsock == INVALID_SOCKET){
if(!isudp){
lg.l_onoff = 1;
lg.l_linger = conf.timeouts[STRING_L];
sock=so._socket(SASOCK(&srv.intsa), SOCK_STREAM, IPPROTO_TCP);
}
else {
@ -813,6 +813,9 @@ int MODULEMAINFUNC (int argc, char** argv){
#else
fcntl(new_sock,F_SETFL,O_NONBLOCK | fcntl(new_sock,F_GETFL));
#endif
lg.l_onoff = 1;
lg.l_linger = conf.timeouts[STRING_L];
so._setsockopt(new_sock, SOL_SOCKET, SO_LINGER, (char *)&lg, sizeof(lg));
so._setsockopt(new_sock, SOL_SOCKET, SO_OOBINLINE, (char *)&opt, sizeof(int));
}