http-backend: write newlines to stderr when responding with errors

The not_found and forbidden methods currently do not write a newline to
stderr after the error message. This means that if git-http-backend is
invoked through something like fcgiwrap, and the stderr of that fcgiwrap
process is sent to a logging daemon (e.g. journald), the error messages
of several git-http-backend invocations will just get strung together,
e.g.

> Not a git repository: '/var/lib/git/foo.git'Not a git repository: '/var/lib/git/foo.git'Not a git repository: '/var/lib/git/foo.git'

I think it's git-http-backend's responsibility to format these messages
properly, rather than it being fcgiwrap's job to notice that the script
didn't terminate stderr with a newline and do so itself.

Signed-off-by: KJ Tsanaktsidis <kj@kjtsanaktsidis.id.au>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
KJ Tsanaktsidis 2026-01-12 01:44:39 +00:00 committed by Junio C Hamano
parent 9a2fb147f2
commit a8227ae8d5
1 changed files with 6 additions and 2 deletions

View File

@ -143,8 +143,10 @@ static NORETURN void not_found(struct strbuf *hdr, const char *err, ...)
end_headers(hdr);

va_start(params, err);
if (err && *err)
if (err && *err) {
vfprintf(stderr, err, params);
putc('\n', stderr);
}
va_end(params);
exit(0);
}
@ -159,8 +161,10 @@ static NORETURN void forbidden(struct strbuf *hdr, const char *err, ...)
end_headers(hdr);

va_start(params, err);
if (err && *err)
if (err && *err) {
vfprintf(stderr, err, params);
putc('\n', stderr);
}
va_end(params);
exit(0);
}