]> git.ipfire.org Git - thirdparty/git.git/commitdiff
send-pack: advertise session ID in capabilities
authorJosh Steadmon <steadmon@google.com>
Wed, 11 Nov 2020 23:29:33 +0000 (15:29 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Nov 2020 02:26:53 +0000 (18:26 -0800)
When the server sent a session-id capability and transfer.advertiseSID
is true, advertise send-pack's own session ID back to the server.

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
send-pack.c

index eb4a44270bad2b2576bc93cb282b5f5bdf4dee83..bda65c98f902eec9b8c894299653b574fba7ff93 100644 (file)
@@ -424,6 +424,7 @@ int send_pack(struct send_pack_args *args,
        int use_sideband = 0;
        int quiet_supported = 0;
        int agent_supported = 0;
+       int advertise_sid = 0;
        int use_atomic = 0;
        int atomic_supported = 0;
        int use_push_options = 0;
@@ -435,6 +436,8 @@ int send_pack(struct send_pack_args *args,
        const char *push_cert_nonce = NULL;
        struct packet_reader reader;
 
+       git_config_get_bool("transfer.advertisesid", &advertise_sid);
+
        /* Does the other end support the reporting? */
        if (server_supports("report-status-v2"))
                status_report = 2;
@@ -450,6 +453,8 @@ int send_pack(struct send_pack_args *args,
                quiet_supported = 1;
        if (server_supports("agent"))
                agent_supported = 1;
+       if (!server_supports("session-id"))
+               advertise_sid = 0;
        if (server_supports("no-thin"))
                args->use_thin_pack = 0;
        if (server_supports("atomic"))
@@ -506,6 +511,8 @@ int send_pack(struct send_pack_args *args,
                strbuf_addf(&cap_buf, " object-format=%s", the_hash_algo->name);
        if (agent_supported)
                strbuf_addf(&cap_buf, " agent=%s", git_user_agent_sanitized());
+       if (advertise_sid)
+               strbuf_addf(&cap_buf, " session-id=%s", trace2_session_id());
 
        /*
         * NEEDSWORK: why does delete-refs have to be so specific to