On 09/27, Junio C Hamano wrote: > Brandon Williams <bmwill@xxxxxxxxxx> writes: > > > A normal request to git-daemon is structured as > > "command path/to/repo\0host=..\0" and due to a bug in an old version of > > git-daemon 73bb33a94 (daemon: Strictly parse the "extra arg" part of the > > command, 2009-06-04) we aren't able to place any extra args (separated > > by NULs) besides the host. > > It's a bit unclear if that commit _introduced_ a bug, or just > noticed an old bug and documented it in its log message. How does > that commit impact the versons of Git that the updated code is > capable of interracting with? You're right, after reading it again it isn't clear. I'll change this to indicate that the commit is a fix to a bug and that the fix doesn't allow us to place any additional args. > > > +static void parse_extra_args(struct hostinfo *hi, struct argv_array *env, > > + char *extra_args, int buflen) > > +{ > > + const char *end = extra_args + buflen; > > + struct strbuf git_protocol = STRBUF_INIT; > > + > > + /* First look for the host argument */ > > + extra_args = parse_host_arg(hi, extra_args, buflen); > > + > > + /* Look for additional arguments places after a second NUL byte */ > > + for (; extra_args < end; extra_args += strlen(extra_args) + 1) { > > + const char *arg = extra_args; > > + > > + /* > > + * Parse the extra arguments, adding most to 'git_protocol' > > + * which will be used to set the 'GIT_PROTOCOL' envvar in the > > + * service that will be run. > > + * > > + * If there ends up being a particular arg in the future that > > + * git-daemon needs to parse specificly (like the 'host' arg) > > + * then it can be parsed here and not added to 'git_protocol'. > > + */ > > + if (*arg) { > > + if (git_protocol.len > 0) > > + strbuf_addch(&git_protocol, ':'); > > + strbuf_addstr(&git_protocol, arg); > > + } > > + } > > + > > + if (git_protocol.len > 0) > > + argv_array_pushf(env, GIT_PROTOCOL_ENVIRONMENT "=%s", > > + git_protocol.buf); > > + strbuf_release(&git_protocol); > > } -- Brandon Williams