On 2019-06-02, Hiltjo Posthuma <[email protected]> wrote:
> I noticed when using openrsync with a remote and a ssh_prog set (-e option)
> the
> socket is closed twice also.
Yes, we need to decide whether rsync_socket() should close the
socket itself or not. Since rsync_socket() doesn't open the socket,
I guess it shouldn't close it either. Matches rsync_client().
ok?
Index: main.c
===================================================================
RCS file: /cvs/src/usr.bin/rsync/main.c,v
retrieving revision 1.46
diff -u -p -r1.46 main.c
--- main.c 28 May 2019 18:20:30 -0000 1.46
+++ main.c 3 Jun 2019 14:30:06 -0000
@@ -428,8 +428,10 @@ main(int argc, char *argv[])
if (fargs->remote && opts.ssh_prog == NULL) {
assert(fargs->mode == FARGS_RECEIVER);
- if ((rc = rsync_connect(&opts, &sd, fargs)) == 0)
+ if ((rc = rsync_connect(&opts, &sd, fargs)) == 0) {
rc = rsync_socket(&opts, sd, fargs);
+ close(sd);
+ }
exit(rc);
}
@@ -484,14 +486,7 @@ main(int argc, char *argv[])
break;
}
- /*
- * If the client has an error and exits, the server may be
- * sitting around waiting to get data while we waitpid().
- * So close the connection here so that they don't hang.
- */
-
- if (rc)
- close(fds[0]);
+ close(fds[0]);
if (waitpid(child, &st, 0) == -1)
err(1, "waitpid");
Index: socket.c
===================================================================
RCS file: /cvs/src/usr.bin/rsync/socket.c,v
retrieving revision 1.24
diff -u -p -r1.24 socket.c
--- socket.c 8 May 2019 21:30:11 -0000 1.24
+++ socket.c 3 Jun 2019 14:26:44 -0000
@@ -455,6 +455,5 @@ rsync_socket(const struct opts *opts, in
rc = 0;
out:
free(args);
- close(sd);
return rc;
}
--
Christian "naddy" Weisgerber [email protected]