[PATCH 1/1] make sure to send http headers

Christian Hesse list at eworm.de
Fri Aug 14 00:02:50 CEST 2015


From: Christian Hesse <mail at eworm.de>

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 at eworm.de>
---
 ui-patch.c | 4 ++++
 1 file changed, 4 insertions(+)

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;
 		}
-- 
2.5.0



More information about the CGit mailing list