[package] uhttpd: fix parameter parsing issue on avr32 and most likely ixp4xx
[openwrt-10.03/.git] / package / uhttpd / src / uhttpd.c
index 97c4f836b7bf58c8cc2cf19e17e8bf1e5317b9a3..c6a8b6c272caadbe01dfc282846fa18a38de7a89 100644 (file)
@@ -410,6 +410,9 @@ int main (int argc, char **argv)
        struct sigaction sa;
        struct config conf;
 
+       /* signal mask */
+       sigset_t ss;
+
        /* maximum file descriptor number */
        int new_fd, cur_fd, max_fd = 0;
 
@@ -419,7 +422,7 @@ int main (int argc, char **argv)
        int nofork = 0;
 
        /* args */
-       char opt;
+       int opt;
        char bind[128];
        char *port = NULL;
 
@@ -432,7 +435,7 @@ int main (int argc, char **argv)
        FD_ZERO(&serv_fds);
        FD_ZERO(&read_fds);
 
-       /* handle SIGPIPE, SIGCHILD */
+       /* handle SIGPIPE, SIGINT, SIGTERM, SIGCHLD */
        sa.sa_flags = 0;
        sigemptyset(&sa.sa_mask);
 
@@ -446,6 +449,11 @@ int main (int argc, char **argv)
        sigaction(SIGINT,  &sa, NULL);
        sigaction(SIGTERM, &sa, NULL);
 
+       /* defer SIGCHLD */
+       sigemptyset(&ss);
+       sigaddset(&ss, SIGCHLD);
+       sigprocmask(SIG_BLOCK, &ss, NULL);
+
        /* prepare addrinfo hints */
        memset(&hints, 0, sizeof(hints));
        hints.ai_family   = AF_UNSPEC;