diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2010-03-21 20:52:41 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2010-03-21 20:52:41 +0000 |
commit | d817ebf0070cd6c70b49fb3c4e13becb0544e429 (patch) | |
tree | 35c44df1e2f168da2e360228e6acce0c5eacef23 /contrib/package/uhttpd/src/uhttpd-cgi.c | |
parent | fa712a0bc9ac90b2172877dc9835c38945838b39 (diff) |
uhttpd: properly initialize sigaction, restore SIGTERM for childs
Diffstat (limited to 'contrib/package/uhttpd/src/uhttpd-cgi.c')
-rw-r--r-- | contrib/package/uhttpd/src/uhttpd-cgi.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/package/uhttpd/src/uhttpd-cgi.c b/contrib/package/uhttpd/src/uhttpd-cgi.c index a239c8bc9..5565197ca 100644 --- a/contrib/package/uhttpd/src/uhttpd-cgi.c +++ b/contrib/package/uhttpd/src/uhttpd-cgi.c @@ -155,6 +155,7 @@ void uh_cgi_request(struct client *cl, struct http_request *req, struct path_inf fd_set reader; fd_set writer; + struct sigaction sa; struct timeval timeout; struct http_response *res; @@ -184,7 +185,13 @@ void uh_cgi_request(struct client *cl, struct http_request *req, struct path_inf /* exec child */ case 0: - /* child */ + /* restore SIGTERM */ + sa.sa_flags = 0; + sa.sa_handler = SIG_DFL; + sigemptyset(&sa.sa_mask); + sigaction(SIGTERM, &sa, NULL); + + /* close loose pipe ends */ close(rfd[0]); close(wfd[1]); |