From b57d89c03baf1190661ab85c39e751fdf42985c4 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Mon, 23 Feb 2015 17:52:15 -0500 Subject: [PATCH] Ticket 48040 - preserve the FD when disabling a listener Bug Description: Stopping the server when the listener is disabled crashes the serveri becuase we close the listener FD twice. Fix Description: When disabling a listener, pass the "preserve fd" flag to ns_job_modify(). This prevents nunc-stans from closing the FD out from underneath us. https://fedorahosted.org/389/ticket/48040 Reviewed by: ? --- ldap/servers/slapd/daemon.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ldap/servers/slapd/daemon.c b/ldap/servers/slapd/daemon.c index 221b7bb..b0b83b2 100644 --- a/ldap/servers/slapd/daemon.c +++ b/ldap/servers/slapd/daemon.c @@ -1202,7 +1202,7 @@ static void ns_disable_listener(listener_info *listener) { /* tell the event framework not to listen for new connections on this listener */ - ns_job_modify(listener->ns_job, NS_JOB_DISABLE_ONLY); + ns_job_modify(listener->ns_job, NS_JOB_DISABLE_ONLY|NS_JOB_PRESERVE_FD); /* add the listener to our list of disabled listeners */ PR_StackPush(ns_disabled_listeners, (PRStackElem *)listener); PR_AtomicIncrement(&num_disabled_listeners); @@ -3492,7 +3492,7 @@ ns_set_shutdown(struct ns_job_t *job) /* Signal all the worker threads to stop */ ns_thrpool_shutdown(ns_job_get_tp(job)); - ns_job_done(job) + ns_job_done(job); } #endif -- 1.9.3