send-pack: send feature request on push-cert packet
[gitweb.git] / send-pack.c
index ef93f33aa5cacfb1713bbe6e9507dbae79c5eda2..d392f5b3a009e16b2cf08933dd0348de3a416bb0 100644 (file)
@@ -225,9 +225,10 @@ static const char *next_line(const char *line, size_t len)
        return nl + 1;
 }
 
-static void generate_push_cert(struct strbuf *req_buf,
-                              const struct ref *remote_refs,
-                              struct send_pack_args *args)
+static int generate_push_cert(struct strbuf *req_buf,
+                             const struct ref *remote_refs,
+                             struct send_pack_args *args,
+                             const char *cap_string)
 {
        const struct ref *ref;
        char stamp[60];
@@ -256,7 +257,7 @@ static void generate_push_cert(struct strbuf *req_buf,
        if (sign_buffer(&cert, &cert, signing_key))
                die(_("failed to sign the push certificate"));
 
-       packet_buf_write(req_buf, "push-cert\n");
+       packet_buf_write(req_buf, "push-cert%c%s", 0, cap_string);
        for (cp = cert.buf; cp < cert.buf + cert.len; cp = np) {
                np = next_line(cp, cert.buf + cert.len - cp);
                packet_buf_write(req_buf,
@@ -267,6 +268,7 @@ static void generate_push_cert(struct strbuf *req_buf,
 free_return:
        free(signing_key);
        strbuf_release(&cert);
+       return update_seen;
 }
 
 int send_pack(struct send_pack_args *args,
@@ -335,7 +337,8 @@ int send_pack(struct send_pack_args *args,
                advertise_shallow_grafts_buf(&req_buf);
 
        if (!args->dry_run && args->push_cert)
-               generate_push_cert(&req_buf, remote_refs, args);
+               cmds_sent = generate_push_cert(&req_buf, remote_refs, args,
+                                              cap_buf.buf);
 
        /*
         * Clear the status for each ref and see if we need to send