From: Jiang Xin Date: Thu, 27 Jan 2022 03:21:23 GMT Subject: Re: [PATCH v2] receive-pack: add option to interrupt pre-receive when client exits Message-ID: In-Reply-To: <20220126214438.3066132-1-robin.jarry@6wind.com> On Thu, Jan 27, 2022 at 10:03 AM Robin Jarry wrote: > @@ -800,6 +806,19 @@ static void prepare_push_cert_sha1(struct child_process *proc) > } > } > > +static volatile pid_t hook_pid; Can we use a flag instead of hook_pid to distinguish the source of the SIGPIPE signal? 1. "pre-receive" hook exits early without consuming stdin. 2. "pre-receive" hook hangs after receiving commands from stdin, until client quits by receiving a "ctrl-c". > +static void kill_hook(int signum) > +{ > + if (hook_pid != 0) { > + kill(hook_pid, signum); > + waitpid(hook_pid, NULL, 0); > + hook_pid = 0; Can we let the signal handler in "pre-receive" to do it job? And we can show some user friendly error message here. E.g.: die("broken pipe: seems like the pre-receive hook exits early without consuming its stdin"); -- Jiang Xin