Christian Weisgerber(na...@mips.inka.de) on 2019.06.03 14:39:14 -0000: > On 2019-06-02, Hiltjo Posthuma <hil...@codemadness.org> 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?
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 na...@mips.inka.de >