Download raw body.
fix non-portable use of pipe(2)
On Thu, Jun 17, 2021 at 04:20:17PM +0200, Stefan Sperling wrote:
> On Thu, Jun 17, 2021 at 06:45:55AM -0600, Todd C. Miller wrote:
> > On Thu, 17 Jun 2021 14:30:42 +0200, Stefan Sperling wrote:
> >
> > > The 'got fetch' command relies on bi-directional communication over
> > > a pipe.
> >
> > Any reason to not just use socketpair(2) which is bi-directional?
>
> Nice, thanks a lot for this hint.
> The much smaller diff below also fixes this issue on Linux.
>
> > I suppose modern pipe implementations are intwined with the VM
> > subsystem and might be faster.
>
> I don't think it's worth caring about that.
>
> diff 1d0f405485b02cc4480ea188879e4122e0ea32bd /home/stsp/src/got
> blob - 0c3e36643b33aa891a6ae0ca06eac2c739842c4c
> file + lib/fetch.c
> --- lib/fetch.c
> +++ lib/fetch.c
> @@ -118,8 +118,8 @@ dial_ssh(pid_t *fetchpid, int *fetchfd, const char *ho
> argv[i++] = (char *)path;
> argv[i++] = NULL;
>
> - if (pipe(pfd) == -1)
> - return got_error_from_errno("pipe");
> + if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pfd) == -1)
> + return got_error_from_errno("socketpair");
>
> pid = fork();
> if (pid == -1) {
>
>
ok jrick
fix non-portable use of pipe(2)