From: Ronnie Sahlberg Date: Fri, 11 Apr 2014 01:21:13 +0000 (-0700) Subject: Merge pull request #71 from Memphiz/nolinger X-Git-Tag: upstream/1.9.6^2~42 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=0275da678b5e0dfdb694c7287503601dcb8fa54c;hp=06b64cc6c2b1d62caf0d23c8a31a63ea2e130b9a;p=deb_libnfs.git Merge pull request #71 from Memphiz/nolinger [socket] - disable linger by setting SO_LINGER to 0 seconds --- diff --git a/lib/socket.c b/lib/socket.c index d025e07..aede89a 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -95,6 +95,14 @@ static void set_nonblocking(int fd) #endif //FIXME } +static void set_nolinger(int fd) +{ + struct linger lng; + lng.l_onoff = 1; + lng.l_linger = 0; + setsockopt(fd, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng)); +} + #ifdef HAVE_NETINET_TCP_H int set_tcp_sockopt(int sockfd, int optname, int value) { @@ -504,6 +512,7 @@ static int rpc_connect_sockaddr_async(struct rpc_context *rpc, struct sockaddr_s } set_nonblocking(rpc->fd); + set_nolinger(rpc->fd); if (connect(rpc->fd, (struct sockaddr *)s, socksize) != 0 && errno != EINPROGRESS) { rpc_set_error(rpc, "connect() to server failed. %s(%d)", strerror(errno), errno);