diff options
author | Christian Hesse | 2015-08-14 00:02:50 +0200 |
---|---|---|
committer | Jason A. Donenfeld | 2015-08-14 12:35:25 +0200 |
commit | aa12084f9835783abbd1f1e4609f8de05e73cec4 (patch) | |
tree | a546f596e980b2e7c484b935b0ff8cbdaadf10ce | |
parent | c543d7dbf6bf7c8be5af829bf1d3eab494856ee0 (diff) | |
download | cgit-aa12084f9835783abbd1f1e4609f8de05e73cec4.tar.gz cgit-aa12084f9835783abbd1f1e4609f8de05e73cec4.tar.bz2 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.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -25,21 +25,25 @@ void cgit_print_patch(const char *new_rev, const char *old_rev, | |||
25 | new_rev = ctx.qry.head; | 25 | new_rev = ctx.qry.head; |
26 | 26 | ||
27 | if (get_sha1(new_rev, new_rev_sha1)) { | 27 | if (get_sha1(new_rev, new_rev_sha1)) { |
28 | cgit_print_http_headers(); | ||
28 | cgit_print_error("Bad object id: %s", new_rev); | 29 | cgit_print_error("Bad object id: %s", new_rev); |
29 | return; | 30 | return; |
30 | } | 31 | } |
31 | commit = lookup_commit_reference(new_rev_sha1); | 32 | commit = lookup_commit_reference(new_rev_sha1); |
32 | if (!commit) { | 33 | if (!commit) { |
34 | cgit_print_http_headers(); | ||
33 | cgit_print_error("Bad commit reference: %s", new_rev); | 35 | cgit_print_error("Bad commit reference: %s", new_rev); |
34 | return; | 36 | return; |
35 | } | 37 | } |
36 | 38 | ||
37 | if (old_rev) { | 39 | if (old_rev) { |
38 | if (get_sha1(old_rev, old_rev_sha1)) { | 40 | if (get_sha1(old_rev, old_rev_sha1)) { |
41 | cgit_print_http_headers(); | ||
39 | cgit_print_error("Bad object id: %s", old_rev); | 42 | cgit_print_error("Bad object id: %s", old_rev); |
40 | return; | 43 | return; |
41 | } | 44 | } |
42 | if (!lookup_commit_reference(old_rev_sha1)) { | 45 | if (!lookup_commit_reference(old_rev_sha1)) { |
46 | cgit_print_http_headers(); | ||
43 | cgit_print_error("Bad commit reference: %s", old_rev); | 47 | cgit_print_error("Bad commit reference: %s", old_rev); |
44 | return; | 48 | return; |
45 | } | 49 | } |