From: Willy Tarreau Date: Fri, 24 Dec 2010 13:49:37 +0000 (+0100) Subject: [CLEANUP] frontend: only apply TCP-specific settings to TCP/TCP6 sockets X-Git-Tag: v1.5-dev8~342 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c3bc229ec3369789ecf31944b44f8e6bed18a03;p=thirdparty%2Fhaproxy.git [CLEANUP] frontend: only apply TCP-specific settings to TCP/TCP6 sockets It's useless to apply keep-alive or lingering to non-TCP sockets. --- diff --git a/src/frontend.c b/src/frontend.c index cf6606a075..4fc4460f0c 100644 --- a/src/frontend.c +++ b/src/frontend.c @@ -88,15 +88,19 @@ int frontend_accept(struct session *s) s->srv_error = default_srv_error; /* Adjust some socket options */ - if ((s->listener->addr.ss_family != AF_UNIX) && - setsockopt(cfd, IPPROTO_TCP, TCP_NODELAY, (char *) &one, sizeof(one)) == -1) - goto out_return; - - if (s->fe->options & PR_O_TCP_CLI_KA) - setsockopt(cfd, SOL_SOCKET, SO_KEEPALIVE, (char *) &one, sizeof(one)); - - if (s->fe->options & PR_O_TCP_NOLING) - setsockopt(cfd, SOL_SOCKET, SO_LINGER, (struct linger *) &nolinger, sizeof(struct linger)); + if (s->listener->addr.ss_family == AF_INET || s->listener->addr.ss_family == AF_INET6) { + if (setsockopt(cfd, IPPROTO_TCP, TCP_NODELAY, + (char *) &one, sizeof(one)) == -1) + goto out_return; + + if (s->fe->options & PR_O_TCP_CLI_KA) + setsockopt(cfd, SOL_SOCKET, SO_KEEPALIVE, + (char *) &one, sizeof(one)); + + if (s->fe->options & PR_O_TCP_NOLING) + setsockopt(cfd, SOL_SOCKET, SO_LINGER, + (struct linger *) &nolinger, sizeof(struct linger)); + } if (global.tune.client_sndbuf) setsockopt(cfd, SOL_SOCKET, SO_SNDBUF, &global.tune.client_sndbuf, sizeof(global.tune.client_sndbuf));