X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/4ccfd96cfee813f3855be5a902acc3d5cd0545a4..b31c92edcc11995daa5c90ec280010a1e2c5b64d:/socket.c diff --git a/socket.c b/socket.c index a64aac6c..c6341ced 100644 --- a/socket.c +++ b/socket.c @@ -198,7 +198,7 @@ int open_socket_out(char *host, int port, const char *bind_address, strlcpy(buffer, h, sizeof buffer); /* Is the USER:PASS@ prefix present? */ - if ((cp = strchr(buffer, '@')) != NULL) { + if ((cp = strrchr(buffer, '@')) != NULL) { *cp++ = '\0'; /* The remainder is the HOST:PORT part. */ h = cp; @@ -452,7 +452,7 @@ void start_accept_loop(int port, int (*fn)(int, int)) for (i = 0, maxfd = -1; sp[i] >= 0; i++) { if (listen(sp[i], 5) < 0) { rsyserr(FERROR, errno, "listen() on socket failed"); -#if INET6 +#ifdef INET6 if (errno == EADDRINUSE && i > 0) { rprintf(FINFO, "Try using --ipv4 or --ipv6 to avoid this listen() error.\n"); @@ -506,6 +506,9 @@ void start_accept_loop(int port, int (*fn)(int, int)) int ret; for (i = 0; sp[i] >= 0; i++) close(sp[i]); + /* Re-open log file in child before possibly giving + * up privileges (see log_close() above). */ + log_open(); ret = fn(fd, fd); close_all(); _exit(ret); @@ -648,16 +651,14 @@ void become_daemon(void) } /* detach from the terminal */ -#if HAVE_SETSID +#ifdef HAVE_SETSID setsid(); -#else -#ifdef TIOCNOTTY +#elif defined TIOCNOTTY i = open("/dev/tty", O_RDWR); if (i >= 0) { ioctl(i, (int)TIOCNOTTY, (char *)0); close(i); } -#endif /* TIOCNOTTY */ #endif /* make sure that stdin, stdout an stderr don't stuff things * up (library functions, for example) */ @@ -693,7 +694,7 @@ static int socketpair_tcp(int fd[2]) goto failed; memset(&sock2, 0, sizeof sock2); -#if HAVE_SOCKADDR_IN_LEN +#ifdef HAVE_SOCKADDR_IN_LEN sock2.sin_len = sizeof sock2; #endif sock2.sin_family = PF_INET;