diff --git a/src/proxymain.c b/src/proxymain.c index 40f7141..e0ba773 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -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)); }