From: Ilari Liusvaara <ilari.liusvaara@elisanet.fi>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [REROLL PATCH 5/8] Support taking over transports
Date: Wed, 9 Dec 2009 17:17:18 +0200 [thread overview]
Message-ID: <20091209151718.GE15673@Knoppix> (raw)
In-Reply-To: <7vljhd597h.fsf@alter.siamese.dyndns.org>
On Tue, Dec 08, 2009 at 03:37:06PM -0800, Junio C Hamano wrote:
> Ilari Liusvaara <ilari.liusvaara@elisanet.fi> writes:
>
> Will we ever have another 'xxxoptions' field in this structure that is not
> so git-ish? 'gitoptions' somehow doesn't feel right, unless you plan to
> later add scm specific options like 'hgoptions', 'bzroptions' in this
> field you need to distinguish "git" one from them.
>
> I know you needed to name the new field to store the transport option
> under a different name from the existing 'option' field, but for that
> purpose, 'transport_options' might be a more appropriate name.
Changed.
> > @@ -109,9 +111,19 @@ static struct child_process *get_helper(struct transport *transport)
> > die("Unable to run helper: git %s", helper->argv[0]);
> > data->helper = helper;
> >
> > + /*
> > + * Open the output as FILE* so strbuf_getline() can be used.
> > + * Do this with duped fd because fclose() will close the fd,
> > + * and stuff like taking over will require the fd to remain.
> > + *
> > + */
> > + duped = dup(helper->out);
> > + if (duped < 0)
> > + die_errno("Can't dup helper output fd");
> > + data->out = xfdopen(duped, "r");
> > +
>
> Neat hack (the kind I often love), but it makes something deep inside me
> cringe. This looks fragile and possibly wrong.
>
> Who guarantees that reading from the (FILE *)data->out by strbuf_getline()
> that eventually calls into fgetc() does not cause more data be read in the
> buffer assiciated with the (FILE *) than we will consume? The other FILE*
> you will make out of helper->out won't be able to read what data->out has
> already slurped in to its stdio buffer.
Causality impiles this can happen only if buffered version gets its buffer
filled after sending connect command. And looking at stdio operations that
can occur after sending the command:
- fprintfs on stderr (debug mode only).
- fgetc()s on unbuffered version.
-Ilari
next prev parent reply other threads:[~2009-12-09 15:17 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-08 13:16 [REROLL PATCH 0/8] Remote helpers smart transport extensions Ilari Liusvaara
2009-12-08 13:16 ` [REROLL PATCH 1/8] Add remote helper debug mode Ilari Liusvaara
2009-12-08 23:34 ` Junio C Hamano
2009-12-08 13:16 ` [REROLL PATCH 2/8] Support mandatory capabilities Ilari Liusvaara
2009-12-08 23:34 ` Junio C Hamano
2009-12-09 15:12 ` Ilari Liusvaara
2009-12-08 13:16 ` [REROLL PATCH 3/8] Pass unknown protocols to external protocol handlers Ilari Liusvaara
2009-12-08 23:35 ` Junio C Hamano
2009-12-09 8:55 ` Bert Wesarg
2009-12-09 15:15 ` Ilari Liusvaara
2009-12-08 13:16 ` [REROLL PATCH 4/8] Refactor git transport options parsing Ilari Liusvaara
2009-12-08 13:16 ` [REROLL PATCH 5/8] Support taking over transports Ilari Liusvaara
2009-12-08 23:37 ` Junio C Hamano
2009-12-09 15:17 ` Ilari Liusvaara [this message]
2009-12-09 21:08 ` Junio C Hamano
2009-12-09 21:42 ` Ilari Liusvaara
2009-12-08 13:16 ` [REROLL PATCH 6/8] Support remote helpers implementing smart transports Ilari Liusvaara
2009-12-08 23:38 ` Junio C Hamano
2009-12-09 15:16 ` Ilari Liusvaara
2009-12-08 13:16 ` [REROLL PATCH 7/8] Support remote archive from external protocol helpers Ilari Liusvaara
2009-12-08 23:39 ` Junio C Hamano
2009-12-09 15:16 ` Ilari Liusvaara
2009-12-08 13:16 ` [REROLL PATCH 8/8] Remove special casing of http, https and ftp Ilari Liusvaara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091209151718.GE15673@Knoppix \
--to=ilari.liusvaara@elisanet.fi \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.