Commit Diff


commit - 74c0c7e4ce3d0e576ce14a8928a9972d15010c1f
commit + 3841a3693094ae7cc3cfd4f80da7f463e2756bcc
blob - b8590f153c10e7b6ecd113d9c1f40cec24cd2b3f
blob + 73d990edb34b8619d836f0d388751051fb2b5b04
--- ex.c
+++ ex.c
@@ -64,6 +64,13 @@ do_exec(const char *ex, const char *spath, char *query
 	char **argv, buf[PATH_MAX], *sname, *t;
 	size_t i, n;
 
+	/* restore the default handlers */
+	signal(SIGPIPE, SIG_DFL);
+	signal(SIGCHLD, SIG_DFL);
+	signal(SIGHUP,  SIG_DFL);
+	signal(SIGINT,  SIG_DFL);
+	signal(SIGTERM, SIG_DFL);
+
 	strlcpy(buf, spath, sizeof(buf));
 	sname = basename(buf);
 
blob - e125d90c1af96db04be1dc75ba1abe6242c6516d
blob + 928b1a6f0e77ced90c9dcf192562938c7047a24f
--- gmid.c
+++ gmid.c
@@ -512,9 +512,6 @@ main(int argc, char **argv)
 		puts("config OK");
 		return 0;
 	}
-
-	signal(SIGPIPE, SIG_IGN);
-	signal(SIGCHLD, SIG_IGN);
 
 	if (!conf.foreground && !configless) {
 		if (daemon(1, 1) == -1)
@@ -531,6 +528,9 @@ main(int argc, char **argv)
 	if (conf.ipv6)
 		sock6 = make_socket(conf.port, AF_INET6);
 
+	signal(SIGPIPE, SIG_IGN);
+	signal(SIGCHLD, SIG_IGN);
+
 	if (configless) {
 		setup_configless(argc, argv, cgi);
 		return 0;