]> git.ipfire.org Git - thirdparty/git.git/commit
receive-pack: ignore SIGPIPE while reporting status to client
authorRobin Jarry <robin@jarry.cc>
Wed, 10 Nov 2021 09:29:42 +0000 (10:29 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Nov 2021 21:43:04 +0000 (13:43 -0800)
commitd34182b9e37fc72e04e40e834775a1c29e80c970
tree4728b5a641c0049410b8f85cc4b3cc2ee2603f96
parent5fbd2fc5997dfa4d4593a862fe729b1e7a89bcf8
receive-pack: ignore SIGPIPE while reporting status to client

Before running the post-receive hook, status info is reported back to
the client. If a remote client exits before or during the status report,
receive-pack is killed by SIGPIPE and post-receive is never executed.

The post-receive hook is often used to send email notifications (see
contrib/hooks/post-receive-email), update bug trackers, start automatic
builds, etc. Not executing it after an interrupted yet "successful" push
can lead to inconsistencies.

Ignore SIGPIPE before reporting status to the client to increase the
chances of post-receive running if pre-receive was successful. This does
not guarantee 100% consistency but it should resist early disconnection
by the client.

Signed-off-by: Robin Jarry <robin@jarry.cc>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c