On Thu, Jan 27, 2022 at 10:03 AM Robin Jarry <robin.jarry@xxxxxxxxx> 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