X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/45a8354004ecbc1c0b03d6e880b512854ed9439a..15b84e142a7de03abd8f9831788d66f0052daea0:/socket.c?ds=sidebyside diff --git a/socket.c b/socket.c index a0debcd1..b4d078cd 100644 --- a/socket.c +++ b/socket.c @@ -247,7 +247,10 @@ void start_accept_loop(int port, int (*fn)(int )) struct sockaddr addr; int in_addrlen = sizeof(addr); - log_release(); + /* close log file before the potentially very long select so + file can be trimmed by another process instead of growing + forever */ + log_close(); FD_ZERO(&fds); FD_SET(s, &fds); @@ -274,6 +277,10 @@ void start_accept_loop(int port, int (*fn)(int )) if (fork()==0) { close(s); + /* open log file in child before possibly giving + up privileges */ + log_open(); + _exit(fn(fd)); }