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

John Keeping john at keeping.me.uk
Fri Aug 14 11:08:32 CEST 2015


On Fri, Aug 14, 2015 at 12:02:50AM +0200, Christian Hesse wrote:
> 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>
> ---

Reviewed-by: John Keeping <john at keeping.me.uk>

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


More information about the CGit mailing list