X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/7f20a02fc98ebb1f4fb29377922c592b0846c364..04b5f1160dbde3d7ee6059e778cbd6835727c723:/trusts/trusts_policy.c diff --git a/trusts/trusts_policy.c b/trusts/trusts_policy.c index ed18729b..b5c70d8e 100644 --- a/trusts/trusts_policy.c +++ b/trusts/trusts_policy.c @@ -5,6 +5,7 @@ #include #include #include +#include #ifndef __USE_MISC #define __USE_MISC /* inet_aton */ @@ -418,6 +419,7 @@ static void processtrustlistener(int fd, short events) { if(events & POLLIN) { trustsocket *sock; char buf[NONCELEN * 2 + 1]; + int optval; int newfd = accept(fd, NULL, NULL), flags; if(newfd == -1) @@ -436,6 +438,15 @@ static void processtrustlistener(int fd, short events) { return; } + optval = 10; + setsockopt(newfd, SOL_SOCKET, TCP_KEEPIDLE, &optval, sizeof(optval)); + optval = 3; + setsockopt(newfd, SOL_SOCKET, TCP_KEEPCNT, &optval, sizeof(optval)); + optval = 10; + setsockopt(newfd, SOL_SOCKET, TCP_KEEPINTVL, &optval, sizeof(optval)); + optval = 1; + setsockopt(newfd, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)); + registerhandler(newfd, POLLIN|POLLERR|POLLHUP, processtrustclient); sock = nsmalloc(POOL_TRUSTS, sizeof(trustsocket));