Re: debugging git clone via git-daemon "cannot handle daemon internally"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



John Griessen wrote:

> john@toolbench:~/EEProjects/test$ telnet mail.cibolo.us 9418
> Trying 76.191.252.85...
> Connected to mail.cibolo.us.
> Escape character is '^]'.
> fatal: cannot handle daemon internally
> Connection closed by foreign host.
> 
> 
> What does "cannot handle daemon internally" signify to you all?

Progress. :)  Interesting.

The message comes from "main" in git.c:

      if (!prefixcmp(cmd, "git-")) {
            cmd += 4;
            argv[0] = cmd;
            handle_internal_command(argc, argv);
            die("cannot handle %s internally", cmd);
      }

Perhaps you have inetd set up to try to run git with argv[0] set
to git-daemon?  git-daemon (daemon.c) has its own "main" so it
would take something of that nature to produce this symptom.

Maybe something like this would have made diagnosis easier.

Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx>
---
diff --git a/pkt-line.c b/pkt-line.c
index 295ba2b..694571d 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -121,6 +121,22 @@ static int packet_length(const char *linelen)
 	return len;
 }
 
+static void NORETURN die_bad_length(int fd, const char linelen[4])
+{
+	struct strbuf msg = STRBUF_INIT;
+	FILE *fp;
+
+	if ((memcmp(linelen, "fata", 4) &&
+	     memcmp(linelen, "erro", 4) &&
+	     memcmp(linelen, "warn", 4)) ||
+	    !(fp = fdopen(fd, "r")))
+		die("protocol error: bad line length character: %.4s", linelen);
+
+	strbuf_getline(&msg, fp, '\n');
+	die("protocol error: bad line length character: %.4s%s",
+		linelen, msg.buf);
+}
+
 int packet_read_line(int fd, char *buffer, unsigned size)
 {
 	int len;
@@ -129,7 +145,7 @@ int packet_read_line(int fd, char *buffer, unsigned size)
 	safe_read(fd, linelen, 4);
 	len = packet_length(linelen);
 	if (len < 0)
-		die("protocol error: bad line length character: %.4s", linelen);
+		die_bad_length(fd, linelen);
 	if (!len)
 		return 0;
 	len -= 4;
--
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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]