credential-cache: close stderr in daemon process
authorJeff King <peff@peff.net>
Sun, 14 Sep 2014 07:35:06 +0000 (03:35 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Sep 2014 18:11:58 +0000 (11:11 -0700)
commitf5e3c0b9d050ebdaf96d3910b01b01695e3ea1a2
tree25ba70a24be840428e49b1ff9fcd53b69dba48ac
parent96db324a73fdada6fbe7b63221986f8f18cc63b0
credential-cache: close stderr in daemon process

If the stderr of "git credential-cache" is redirected to a
pipe, the reader on the other end of a pipe may be surprised
that the pipe remains open long after the process exits.
This happens because we may auto-spawn a daemon which is
long-lived, and which keeps stderr open.

We can solve this by redirecting the daemon's stderr to
/dev/null once we are ready to go into our event loop. We
would not want to do so before then, because we may want to
report errors about the setup (e.g., failure to establish
the listening socket).

This does mean that we will not report errors we encounter
for specific clients. That's acceptable, as such errors
should be rare (e.g., clients sending buggy requests).
However, we also provide an escape hatch: if you want to see
these later messages, you can provide the "--debug" option
to keep stderr open.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-credential-cache--daemon.txt
credential-cache--daemon.c