From: Jonathan Nieder <jrnieder@gmail.com>
To: Erik Faye-Lund <kusmabite@gmail.com>
Cc: git@vger.kernel.org, gitster@pobox.com
Subject: [PATCH] daemon: support <directory> arguments again
Date: Mon, 3 Jan 2011 22:04:46 -0600 [thread overview]
Message-ID: <20110104040446.GA3541@burratino> (raw)
In-Reply-To: <1288834524-2400-9-git-send-email-kusmabite@gmail.com>
Ever since v1.7.4-rc0~125^2~8 (daemon: use run-command api for async
serving, 2010-11-04), git daemon spawns child processes instead of
forking to serve requests. The child processes learn that they are
being run for this purpose from the presence of the --serve command
line flag.
When running with <ok_path> arguments, the --serve flag is treated
as one of the path arguments and the special child behavior does
not kick in. So the child becomes an ordinary git daemon process,
notices that all the addresses it needs are in use, and exits with
the message "fatal: unable to allocate any listen sockets on port
9418".
Fix it by putting --serve at the beginning of the command line,
where the flag cannot be mistaken for a path argument.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
On the client side:
$ git clone git://localhost/git/git.git
Cloning into git...
fatal: read error: Connection reset by peer
On the server side:
# $git_src/bin-wrappers/git daemon --verbose --base-path=/var/cache /var/cache/git
fatal: unable to allocate any listen sockets on port 9418
[3602] [3604] Disconnected (with error)
Bisects to v1.7.4-rc0~125^2~8. This patch seems to fix it. Thoughts?
daemon.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/daemon.c b/daemon.c
index 4059593..132b7a8 100644
--- a/daemon.c
+++ b/daemon.c
@@ -1181,9 +1181,10 @@ int main(int argc, char **argv)
/* prepare argv for serving-processes */
cld_argv = xmalloc(sizeof (char *) * (argc + 2));
- for (i = 0; i < argc; ++i)
- cld_argv[i] = argv[i];
- cld_argv[argc] = "--serve";
+ cld_argv[0] = argv[0]; /* git-daemon */
+ cld_argv[1] = "--serve";
+ for (i = 1; i < argc; ++i)
+ cld_argv[i+1] = argv[i];
cld_argv[argc+1] = NULL;
return serve(&listen_addr, listen_port, pass, gid);
--
1.7.4.rc0
next prev parent reply other threads:[~2011-01-04 4:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-04 1:35 [PATCH v7 00/16] daemon-win32 Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 01/16] mingw: add network-wrappers for daemon Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 02/16] mingw: implement syslog Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 03/16] compat: add inet_pton and inet_ntop prototypes Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 04/16] inet_ntop: fix a couple of old-style decls Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 05/16] mingw: use real pid Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 06/16] mingw: support waitpid with pid > 0 and WNOHANG Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 07/16] mingw: add kill emulation Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 08/16] daemon: use run-command api for async serving Erik Faye-Lund
2011-01-04 4:04 ` Jonathan Nieder [this message]
2011-01-04 12:42 ` [PATCH] daemon: support <directory> arguments again Erik Faye-Lund
2011-01-04 19:18 ` Junio C Hamano
2010-11-04 1:35 ` [PATCH v7 09/16] daemon: use full buffered mode for stderr Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 10/16] Improve the mingw getaddrinfo stub to handle more use cases Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 11/16] daemon: get remote host address from root-process Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 12/16] mingw: import poll-emulation from gnulib Erik Faye-Lund
2011-07-06 9:06 ` Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 13/16] mingw: use " Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 14/16] daemon: use socklen_t Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 15/16] daemon: make --inetd and --detach incompatible Erik Faye-Lund
2010-11-04 1:35 ` [PATCH v7 16/16] daemon: opt-out on features that require posix Erik Faye-Lund
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=20110104040446.GA3541@burratino \
--to=jrnieder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kusmabite@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).