OK On Fri, Apr 16, 2021 at 05:20:00PM +0200, Claudio Jeker wrote: > This is an optimisation. > > Instead of installing a signal handler that does nothing just ignore the > signal. Now to ensure that the cgi processes run with a default SIGPIPE > restore it before execve. > > -- > :wq Claudio > > Index: slowcgi.c > =================================================================== > RCS file: /cvs/src/usr.sbin/slowcgi/slowcgi.c,v > retrieving revision 1.58 > diff -u -p -r1.58 slowcgi.c > --- slowcgi.c 8 Jan 2021 22:05:34 -0000 1.58 > +++ slowcgi.c 16 Apr 2021 14:54:41 -0000 > @@ -148,7 +148,6 @@ SLIST_HEAD(requests_head, requests); > struct slowcgi_proc { > struct requests_head requests; > struct event ev_sigchld; > - struct event ev_sigpipe; > }; > > struct fcgi_begin_request_body { > @@ -374,11 +373,9 @@ main(int argc, char *argv[]) > > signal_set(&slowcgi_proc.ev_sigchld, SIGCHLD, slowcgi_sig_handler, > &slowcgi_proc); > - signal_set(&slowcgi_proc.ev_sigpipe, SIGPIPE, slowcgi_sig_handler, > - &slowcgi_proc); > + signal(SIGPIPE, SIG_IGN); > > signal_add(&slowcgi_proc.ev_sigchld, NULL); > - signal_add(&slowcgi_proc.ev_sigpipe, NULL); > > event_dispatch(); > return (0); > @@ -561,9 +558,6 @@ slowcgi_sig_handler(int sig, short event > if (pid == -1 && errno != ECHILD) > lwarn("waitpid"); > break; > - case SIGPIPE: > - /* ignore */ > - break; > default: > lerr(1, "unexpected signal: %d", sig); > break; > @@ -939,6 +933,8 @@ exec_cgi(struct request *c) > close(s_in[1]); > close(s_out[1]); > close(s_err[1]); > + > + signal(SIGPIPE, SIG_DFL); > > path = strrchr(c->script_name, '/'); > if (path != NULL) { >
-- I'm not entirely sure you are real.