diff --git a/inotify.c b/inotify.c index 745436c..d5043bb 100644 --- a/inotify.c +++ b/inotify.c @@ -641,7 +641,7 @@ inotify_remove_directory(int fd, const char * path) } void * -start_inotify() +start_inotify(void) { struct pollfd pollfds[1]; int timeout = 1000; @@ -650,6 +650,10 @@ start_inotify() int length, i = 0; char * esc_name = NULL; struct stat st; + sigset_t set; + + sigfillset(&set); + pthread_sigmask(SIG_BLOCK, &set, NULL); pollfds[0].fd = inotify_init(); pollfds[0].events = POLLIN; diff --git a/minidlna.c b/minidlna.c index 8977a17..6c5110a 100644 --- a/minidlna.c +++ b/minidlna.c @@ -1299,10 +1299,6 @@ shutdown: if (scanning && scanner_pid) kill(scanner_pid, SIGKILL); - /* kill other child processes */ - process_reap_children(); - free(children); - /* close out open sockets */ while (upnphttphead.lh_first != NULL) { @@ -1330,6 +1326,10 @@ shutdown: if (inotify_thread) pthread_join(inotify_thread, NULL); + /* kill other child processes */ + process_reap_children(); + free(children); + sql_exec(db, "UPDATE SETTINGS set VALUE = '%u' where KEY = 'UPDATE_ID'", updateID); sqlite3_close(db); diff --git a/process.c b/process.c index 96ec1c3..ecb4922 100644 --- a/process.c +++ b/process.c @@ -96,10 +96,10 @@ process_fork(struct client_cache_s *client) pid_t pid = fork(); if (pid > 0) { - number_of_children++; if (client) client->connections++; add_process_info(pid, client); + number_of_children++; } return pid;