s3:nmbd: as the sig_term() handler only sets a flag we don't need to block SIGTERM
[metze/samba/wip.git] / source3 / nmbd / asyncdns.c
index 5e5565991eff955e7ca959208f4220e9ac8ac4bb..0736a66fb8a9bc570aa050230ee3b01d90e2b4a0 100644 (file)
@@ -164,6 +164,12 @@ void start_async_dns(void)
        CatchSignal(SIGHUP, SIG_IGN);
         CatchSignal(SIGTERM, SIGNAL_CAST sig_term );
 
+       if (!reinit_after_fork(nmbd_messaging_context(),
+                              nmbd_event_context(), true)) {
+               DEBUG(0,("reinit_after_fork() failed\n"));
+               smb_panic("reinit_after_fork() failed");
+       }
+
        asyncdns_process();
 }
 
@@ -204,9 +210,6 @@ void run_dns_queue(void)
        if (fd_in == -1)
                return;
 
-        /* Allow SIGTERM to kill us. */
-        BlockSignals(False, SIGTERM);
-
        if (!process_exists_by_pid(child_pid)) {
                close(fd_in);
                close(fd_out);
@@ -218,12 +221,9 @@ void run_dns_queue(void)
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("read from child failed: %s\n", nt_errstr(status)));
                fd_in = -1;
-                BlockSignals(True, SIGTERM);
                return;
        }
 
-        BlockSignals(True, SIGTERM);
-
        namerec = add_dns_result(&r.name, r.result);
 
        if (dns_current) {
@@ -332,14 +332,8 @@ bool queue_dns_query(struct packet_struct *p,struct nmb_name *question)
 
        DEBUG(3,("DNS search for %s - ", nmb_namestr(question)));
 
-        /* Unblock TERM signal so we can be killed in DNS lookup. */
-        BlockSignals(False, SIGTERM);
-
        dns_ip.s_addr = interpret_addr(qname);
 
-        /* Re-block TERM signal. */
-        BlockSignals(True, SIGTERM);
-
        namerec = add_dns_result(question, dns_ip);
        if(namerec == NULL) {
                send_wins_name_query_response(NAM_ERR, p, NULL);