Browse Source

Merge branch 'ew/daemon-socket-keepalive'

Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().

* ew/daemon-socket-keepalive:
  Windows: add missing definition of ENOTSOCK
  daemon: ignore ENOTSOCK from setsockopt
maint
Junio C Hamano 9 years ago
parent
commit
b48dfd86c9
  1. 3
      compat/mingw.h
  2. 8
      daemon.c

3
compat/mingw.h

@ -73,6 +73,9 @@ typedef int pid_t; @@ -73,6 +73,9 @@ typedef int pid_t;
#ifndef ECONNABORTED
#define ECONNABORTED WSAECONNABORTED
#endif
#ifndef ENOTSOCK
#define ENOTSOCK WSAENOTSOCK
#endif

struct passwd {
char *pw_name;

8
daemon.c

@ -672,9 +672,11 @@ static void set_keep_alive(int sockfd) @@ -672,9 +672,11 @@ static void set_keep_alive(int sockfd)
{
int ka = 1;

if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &ka, sizeof(ka)) < 0)
logerror("unable to set SO_KEEPALIVE on socket: %s",
strerror(errno));
if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &ka, sizeof(ka)) < 0) {
if (errno != ENOTSOCK)
logerror("unable to set SO_KEEPALIVE on socket: %s",
strerror(errno));
}
}

static int execute(void)

Loading…
Cancel
Save