From 072b6270f04618f486094e5ca712bf8e2f6dc2e2 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Fri, 7 Mar 2014 14:07:01 -0500 Subject: [PATCH 172/225] Ticket 47729 - Directory Server crashes if shutdown during a replication initialization Bug Description: When a shutdown was detected we marked that the total update was done prematurely(prp->stopped). This allowed the replication plugin to close while the total update was still in progress. Other plugins continued to be shutdown (e.g. ldbm database), while the total update was using shared resources - which lead to a crash. Fix Description: Only mark the total update protocol as stopped, after it is finished using shared resources. https://fedorahosted.org/389/ticket/47729 Reviewed by: nhosoi(Thanks!) (cherry picked from commit e7f7e9127717c1d432b10493b626fed334cc595f) (cherry picked from commit e0fd1ffcd84d533e4cd62aae15aea504677798ab) --- ldap/servers/plugins/replication/repl5_tot_protocol.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ldap/servers/plugins/replication/repl5_tot_protocol.c b/ldap/servers/plugins/replication/repl5_tot_protocol.c index b10d2d0..9829984 100644 --- a/ldap/servers/plugins/replication/repl5_tot_protocol.c +++ b/ldap/servers/plugins/replication/repl5_tot_protocol.c @@ -340,7 +340,6 @@ repl5_tot_run(Private_Repl_Protocol *prp) prp->stopped = 0; if (prp->terminate) { - prp->stopped = 1; goto done; } @@ -362,8 +361,7 @@ repl5_tot_run(Private_Repl_Protocol *prp) } else if (prp->terminate) { - conn_disconnect(prp->conn); - prp->stopped = 1; + conn_disconnect(prp->conn); goto done; } @@ -646,7 +644,6 @@ int send_entry (Slapi_Entry *e, void *cb_data) if (prp->terminate) { conn_disconnect(prp->conn); - prp->stopped = 1; ((callback_data*)cb_data)->rc = -1; return -1; } @@ -659,7 +656,6 @@ int send_entry (Slapi_Entry *e, void *cb_data) if (rc) { conn_disconnect(prp->conn); - prp->stopped = 1; ((callback_data*)cb_data)->rc = -1; return -1; } -- 1.8.1.4