On Wed, 3 Jun 2009, Shawn O. Pearce wrote: > "Shawn O. Pearce" <spearce@xxxxxxxxxxx> wrote: > > Jakub Narebski <jnareb@xxxxxxxxx> wrote: > > > What options besides (required?) "host=<server>[:<port>]" are supported? > > > > Currently only host is supported. And yea, it takes the :<port> if > > the client included the port number in the URL (git://foo:8813/path). > > Ok, I'm wrong. It *doesn't* send the port. The reason is obtuse, > but git_tcp_connect() clobbers the port number out of the host What about git_proxy_connect()? Does it clobber port number either? > name string, so that later when git_connect() sends this "host=%s", > only the host name is transmitted. Hmmm... so does that mean that in the following fragment of deamon.c on branch is dead in practice? if (strncasecmp("host=", extra_args, 5) == 0) { val = extra_args + 5; vallen = strlen(val) + 1; if (*val) { /* Split <host>:<port> at colon. */ char *host = val; char *port = strrchr(host, ':'); if (port) { *port = 0; port++; free(tcp_port); tcp_port = xstrdup(port); } free(hostname); hostname = xstrdup_tolower(host); } /* On to the next one */ extra_args = val + vallen; } > > Actually, I just realized JGit isn't compliant here. It doesn't > > send the :<port> like C Git would. > > So, actually JGit is compliant here. Well, we can take the stance that C Git isn't compliant either ;-) > > > > Do I understand correctly that "host=<host>" information is required > > > for core.gitProxy to work, isn't it? > > If core.gitProxy or GIT_PROXY_COMMAND are set, you can lie to the > remote git daemon about the host. E.g.: > > $ cat proxy.sh > #!/bin/sh > exec nc git.kernel.org 9418 > > GIT_PROXY_COMMAND=proxy.sh git ls-remote git://github.com/foo.git > > During that kernel.org receives "\0host=github.com\0" host header, > which is not the name you connected to it as. :-) > > In practice I doubt anyone would do that, but, you can confuse > yourself. I guess about equally as well as url.insteadof. :-) A question: do compliant implementation MUST not fail on receiving arguments it doesn't understand, e.g.: 003bgit-upload-pack /project.git\0host=myserver.com\0user=me\0 or can it go hang the client, or silently fail? -- Jakub Narebski Poland -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html