]> granicus.if.org Git - cgit/commitdiff
ui-patch: make sure to send http headers
authorChristian Hesse <mail@eworm.de>
Thu, 13 Aug 2015 22:02:50 +0000 (00:02 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 14 Aug 2015 10:35:25 +0000 (12:35 +0200)
Requesting a text/plain patch with bad commit id made cgit send text
without proper http headers. This results in "500 Internal Server Error"
with "Premature end of script headers" in server logs.
So print http headers before error message and return.

Signed-off-by: Christian Hesse <mail@eworm.de>
Reviewed-by: John Keeping <john@keeping.me.uk>
ui-patch.c

index 6ec89b4ccf3a8b448d4c006ca2b386661498b74c..57ca2f8ca7710df8cbea9b3bab09ff576f8a1d7d 100644 (file)
@@ -25,21 +25,25 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,
                new_rev = ctx.qry.head;
 
        if (get_sha1(new_rev, new_rev_sha1)) {
+               cgit_print_http_headers();
                cgit_print_error("Bad object id: %s", new_rev);
                return;
        }
        commit = lookup_commit_reference(new_rev_sha1);
        if (!commit) {
+               cgit_print_http_headers();
                cgit_print_error("Bad commit reference: %s", new_rev);
                return;
        }
 
        if (old_rev) {
                if (get_sha1(old_rev, old_rev_sha1)) {
+                       cgit_print_http_headers();
                        cgit_print_error("Bad object id: %s", old_rev);
                        return;
                }
                if (!lookup_commit_reference(old_rev_sha1)) {
+                       cgit_print_http_headers();
                        cgit_print_error("Bad commit reference: %s", old_rev);
                        return;
                }