On Sat, 3 Jun 2006, Jon Loeliger wrote: > > <jdl> Thus, I'd use something like: > --map-base=www.foo.com/pub/scm:/pub/foo/scm > --map-base=www.bar.com/pub/scm=/pub/bar/scm The bigger problem is that nothing actually passes in the hostname to git-daemon in the first place. By the time the git-daemon is contacted, the hostname is long gone ;( Now, you can just extend the git protocol to just pass in the host too. You can in fact do this in a backwards-compatible manner (old git-daemons will just ignore it, and new git daemons will automatically notice new clients) with something evil like the appended. Not tested (and this actualyl doesn't make the daemon _use_ the data, it just adds a comment - the rest "is left as an exercise for the reader") Linus --- diff --git a/connect.c b/connect.c index 54f7bf7..36c5d04 100644 --- a/connect.c +++ b/connect.c @@ -374,7 +374,7 @@ static int git_tcp_connect(int fd[2], co fd[0] = sockfd; fd[1] = sockfd; - packet_write(sockfd, "%s %s\n", prog, path); + packet_write(sockfd, "%s %s%c%s%c%s\n", prog, path, 0, host, 0, port); return 0; } diff --git a/daemon.c b/daemon.c index 776749e..61e0af9 100644 --- a/daemon.c +++ b/daemon.c @@ -267,7 +267,7 @@ static int upload(char *dir) static int execute(void) { static char line[1000]; - int len; + int len, n; alarm(init_timeout ? init_timeout : timeout); len = packet_read_line(0, line, sizeof(line)); @@ -276,6 +276,14 @@ static int execute(void) if (len && line[len-1] == '\n') line[--len] = 0; + n = strlen(line); + if (n != len) { + /* Cool, we have hidden info at the end */ + /* Parse the hostname and the port, and */ + /* leave some room for expansion for */ + /* the future .. */ + } + if (!strncmp("git-upload-pack ", line, 16)) return upload(line+16); - : 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