Re: [PATCH v2] receive-pack: add option to interrupt pre-receive when client exits
- From
Jiang Xin <worldhello.net@gmail.com>
- Date
- Jan 27, 2022, 03:21 UTC
- Message-ID
- <CANYiYbGME-=w4raiwW3w1_gHzVpsvdStz7xVpKqAwx2r_Vezzw@mail.gmail.com>
- In-Reply-To
- <20220126214438.3066132-1-robin.jarry@6wind.com>
On Thu, Jan 27, 2022 at 10:03 AM Robin Jarry <robin.jarry@6wind.com> wrote:
Show 5 quoted lines
> @@ -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".
Show 6 quoted lines
> +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