uhttpd: properly initialize sigaction, restore SIGTERM for childs
This commit is contained in:
parent
fa712a0bc9
commit
d817ebf007
3 changed files with 19 additions and 2 deletions
|
@ -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]);
|
||||
|
||||
|
|
|
@ -229,6 +229,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
|
|||
fd_set reader;
|
||||
fd_set writer;
|
||||
|
||||
struct sigaction sa;
|
||||
struct timeval timeout;
|
||||
|
||||
|
||||
|
@ -255,7 +256,13 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
|
|||
break;
|
||||
|
||||
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]);
|
||||
|
||||
|
|
|
@ -423,6 +423,9 @@ int main (int argc, char **argv)
|
|||
FD_ZERO(&read_fds);
|
||||
|
||||
/* handle SIGPIPE, SIGCHILD */
|
||||
sa.sa_flags = 0;
|
||||
sigemptyset(&sa.sa_mask);
|
||||
|
||||
sa.sa_handler = SIG_IGN;
|
||||
sigaction(SIGPIPE, &sa, NULL);
|
||||
sigaction(SIGCHLD, &sa, NULL);
|
||||
|
|
Loading…
Reference in a new issue