Code

enable "no-done" extension only when serving over smart-http
authorJunio C Hamano <gitster@pobox.com>
Tue, 29 Mar 2011 17:24:59 +0000 (10:24 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 29 Mar 2011 19:21:28 +0000 (12:21 -0700)
Do not advertise no-done capability when upload-pack is not serving over
smart-http, as there is no way for this server to know when it should stop
reading in-flight data from the client, even though it is necessary to
drain all the in-flight data in order to unblock the client.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
upload-pack.c

index 5924f6f988aa03d8a2d74ab0b616524111bffcce..a247fb9e272e3a44ded0fb9cfe1b64d3df5a158c 100644 (file)
@@ -640,15 +640,16 @@ static int send_ref(const char *refname, const unsigned char *sha1, int flag, vo
 {
        static const char *capabilities = "multi_ack thin-pack side-band"
                " side-band-64k ofs-delta shallow no-progress"
-               " include-tag multi_ack_detailed no-done";
+               " include-tag multi_ack_detailed";
        struct object *o = parse_object(sha1);
 
        if (!o)
                die("git upload-pack: cannot find object %s:", sha1_to_hex(sha1));
 
        if (capabilities)
-               packet_write(1, "%s %s%c%s\n", sha1_to_hex(sha1), refname,
-                       0, capabilities);
+               packet_write(1, "%s %s%c%s%s\n", sha1_to_hex(sha1), refname,
+                            0, capabilities,
+                            stateless_rpc ? " no-done" : "");
        else
                packet_write(1, "%s %s\n", sha1_to_hex(sha1), refname);
        capabilities = NULL;