From mboxrd@z Thu Jan 1 00:00:00 1970 From: john at keeping.me.uk (John Keeping) Date: Fri, 14 Aug 2015 10:08:32 +0100 Subject: [PATCH 1/1] make sure to send http headers In-Reply-To: <1439503370-24115-1-git-send-email-list@eworm.de> References: <1439503370-24115-1-git-send-email-list@eworm.de> Message-ID: <20150814090832.GP30507@serenity.lan> On Fri, Aug 14, 2015 at 12:02:50AM +0200, Christian Hesse wrote: > From: Christian Hesse > > 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 > --- Reviewed-by: John Keeping This should change to use cgit_print_error_page() when jk/http-status-codes lands, but it looks like I missed ui-patch.c in that series (probably because it doesn't use want_layout in cmd.c). > 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