aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hesse <mail@eworm.de>2015-08-13 22:02:50 +0000
committerJason A. Donenfeld <Jason@zx2c4.com>2015-08-14 10:35:25 +0000
commitaa12084f9835783abbd1f1e4609f8de05e73cec4 (patch)
treea546f596e980b2e7c484b935b0ff8cbdaadf10ce
parentc543d7dbf6bf7c8be5af829bf1d3eab494856ee0 (diff)
downloadcgit-aa12084f9835783abbd1f1e4609f8de05e73cec4.tar
cgit-aa12084f9835783abbd1f1e4609f8de05e73cec4.tar.gz
cgit-aa12084f9835783abbd1f1e4609f8de05e73cec4.zip
ui-patch: make sure to send http headers
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>
-rw-r--r--ui-patch.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ui-patch.c b/ui-patch.c
index 6ec89b4..57ca2f8 100644
--- a/ui-patch.c
+++ b/ui-patch.c
@@ -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;
}