[Pkg-fedora-ds-maintainers] 389-ds-base: Changes to 'upstream-unstable'

Timo Aaltonen tjaalton-guest at alioth.debian.org
Thu Sep 27 08:21:51 UTC 2012


 Makefile.am                                               |   25 
 Makefile.in                                               |  106 
 VERSION.sh                                                |    4 
 config.h.in                                               |    3 
 configure                                                 |   83 
 configure.ac                                              |   15 
 ldap/admin/src/scripts/DSCreate.pm.in                     |    3 
 ldap/admin/src/scripts/template-cleanallruv.pl.in         |  186 +
 ldap/ldif/50posix-winsync-plugin.ldif                     |   20 
 ldap/schema/01core389.ldif                                |   18 
 ldap/schema/02common.ldif                                 |    3 
 ldap/servers/plugins/automember/automember.c              |   19 
 ldap/servers/plugins/dna/dna.c                            |   12 
 ldap/servers/plugins/linkedattrs/fixup_task.c             |    2 
 ldap/servers/plugins/linkedattrs/linked_attrs.h           |    2 
 ldap/servers/plugins/memberof/memberof.c                  |  345 +-
 ldap/servers/plugins/memberof/memberof.h                  |    2 
 ldap/servers/plugins/posix-winsync/README                 |   50 
 ldap/servers/plugins/posix-winsync/posix-group-func.c     |  484 ++
 ldap/servers/plugins/posix-winsync/posix-group-func.h     |   21 
 ldap/servers/plugins/posix-winsync/posix-group-task.c     |  303 +
 ldap/servers/plugins/posix-winsync/posix-winsync-config.c |  286 +
 ldap/servers/plugins/posix-winsync/posix-winsync.c        | 1700 ++++++++++
 ldap/servers/plugins/posix-winsync/posix-wsp-ident.h      |   51 
 ldap/servers/plugins/referint/referint.c                  |   47 
 ldap/servers/plugins/replication/cl5_api.c                |   75 
 ldap/servers/plugins/replication/cl5_api.h                |    9 
 ldap/servers/plugins/replication/cl5_clcache.c            |   16 
 ldap/servers/plugins/replication/repl.h                   |   14 
 ldap/servers/plugins/replication/repl5.h                  |   65 
 ldap/servers/plugins/replication/repl5_agmt.c             |  213 +
 ldap/servers/plugins/replication/repl5_agmtlist.c         |   15 
 ldap/servers/plugins/replication/repl5_connection.c       |   13 
 ldap/servers/plugins/replication/repl5_inc_protocol.c     |   23 
 ldap/servers/plugins/replication/repl5_init.c             |   46 
 ldap/servers/plugins/replication/repl5_plugins.c          |   21 
 ldap/servers/plugins/replication/repl5_replica.c          |  508 ++-
 ldap/servers/plugins/replication/repl5_replica_config.c   | 2295 ++++++++++----
 ldap/servers/plugins/replication/repl5_ruv.c              |   87 
 ldap/servers/plugins/replication/repl5_ruv.h              |    2 
 ldap/servers/plugins/replication/repl5_tot_protocol.c     |    2 
 ldap/servers/plugins/replication/repl_bind.c              |    1 
 ldap/servers/plugins/replication/repl_connext.c           |  156 
 ldap/servers/plugins/replication/repl_extop.c             |  544 +--
 ldap/servers/plugins/replication/repl_globals.c           |    6 
 ldap/servers/plugins/replication/windows_inc_protocol.c   |    7 
 ldap/servers/plugins/replication/windows_private.c        | 1436 +++++++-
 ldap/servers/plugins/replication/windows_protocol_util.c  |  156 
 ldap/servers/plugins/replication/windows_tot_protocol.c   |    7 
 ldap/servers/plugins/replication/windowsrepl.h            |   11 
 ldap/servers/plugins/replication/winsync-plugin.h         |  653 ---
 ldap/servers/plugins/rootdn_access/rootdn_access.c        |   82 
 ldap/servers/plugins/schema_reload/schema_reload.c        |   11 
 ldap/servers/plugins/syntaxes/nameoptuid.c                |    3 
 ldap/servers/plugins/syntaxes/string.c                    |   63 
 ldap/servers/plugins/uiduniq/plugin-utils.h               |    4 
 ldap/servers/plugins/uiduniq/uid.c                        |   84 
 ldap/servers/plugins/uiduniq/utils.c                      |    6 
 ldap/servers/plugins/usn/usn_cleanup.c                    |    2 
 ldap/servers/slapd/apibroker.c                            |   58 
 ldap/servers/slapd/attr.c                                 |   73 
 ldap/servers/slapd/attrlist.c                             |    6 
 ldap/servers/slapd/attrsyntax.c                           |   83 
 ldap/servers/slapd/back-ldbm/cache.c                      |   24 
 ldap/servers/slapd/back-ldbm/dblayer.c                    |   41 
 ldap/servers/slapd/back-ldbm/index.c                      |    4 
 ldap/servers/slapd/back-ldbm/ldbm_add.c                   |    2 
 ldap/servers/slapd/back-ldbm/ldbm_delete.c                |   22 
 ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c              |    6 
 ldap/servers/slapd/back-ldbm/ldbm_search.c                |    6 
 ldap/servers/slapd/back-ldbm/proto-back-ldbm.h            |    1 
 ldap/servers/slapd/back-ldbm/start.c                      |   36 
 ldap/servers/slapd/entry.c                                |   39 
 ldap/servers/slapd/entrywsi.c                             |    6 
 ldap/servers/slapd/ldaputil.c                             |   37 
 ldap/servers/slapd/libglobs.c                             |   63 
 ldap/servers/slapd/log.c                                  |   27 
 ldap/servers/slapd/main.c                                 |   13 
 ldap/servers/slapd/opshared.c                             |   31 
 ldap/servers/slapd/pw_mgmt.c                              |    2 
 ldap/servers/slapd/slapi-plugin.h                         |   92 
 ldap/servers/slapd/slapi-private.h                        |    4 
 ldap/servers/slapd/ssl.c                                  |    5 
 ldap/servers/slapd/task.c                                 |   56 
 ldap/servers/slapd/utf8compare.c                          |   19 
 ldap/servers/slapd/value.c                                |   11 
 ldap/servers/slapd/valueset.c                             |    4 
 wrappers/initscript.in                                    |    3 
 88 files changed, 8752 insertions(+), 2448 deletions(-)

New commits:
commit cf42a2f2523bdd06ced9a1d349242c373f720654
Author: Rich Megginson <rmeggins at redhat.com>
Date:   Tue Sep 25 10:16:09 2012 -0600

    bump version to 1.2.11.15

diff --git a/VERSION.sh b/VERSION.sh
index 5062025..8584891 100644
--- a/VERSION.sh
+++ b/VERSION.sh
@@ -10,7 +10,7 @@ vendor="389 Project"
 # PACKAGE_VERSION is constructed from these
 VERSION_MAJOR=1
 VERSION_MINOR=2
-VERSION_MAINT=11.14
+VERSION_MAINT=11.15
 # if this is a PRERELEASE, set VERSION_PREREL
 # otherwise, comment it out
 # be sure to include the dot prefix in the prerel

commit 03d1cbd785fbc4f193b4aa33b40ebfc9c8e39e69
Author: Noriko Hosoi <nhosoi at totoro.usersys.redhat.com>
Date:   Mon Sep 24 17:24:18 2012 -0700

    Trac Ticket #470 - 389 prevents from adding a posixaccount
        with userpassword after schema reload
    
    https://fedorahosted.org/389/ticket/470
    
    Bug description: Schema reload task reloads schema files in the
    schema directory.  Not just them, DS has several internal schema
    which are not stored in the schema file, which were lost after
    the schema reload task is executed.  One of them unhashed#
    user#password was necessary for adding a posixaccount.
    
    Fix description: When registering an internal schema, the schema
    is stashed in a hash table.  When schema reload is executed, the
    internal schema are reloaded with the external schema.
    (cherry picked from commit 628e2b353e2dd6ac6aaac39067667ed27cacfb59)

diff --git a/ldap/servers/plugins/schema_reload/schema_reload.c b/ldap/servers/plugins/schema_reload/schema_reload.c
index 82d8e2e..efc0de2 100644
--- a/ldap/servers/plugins/schema_reload/schema_reload.c
+++ b/ldap/servers/plugins/schema_reload/schema_reload.c
@@ -170,6 +170,13 @@ schemareload_thread(void *arg)
             slapi_task_log_notice(task, "Schema reload task finished.");
             slapi_task_log_status(task, "Schema reload task finished.");
             slapi_log_error(SLAPI_LOG_FATAL, "schemareload", "Schema reload task finished.\n");
+
+            slapi_log_error(SLAPI_LOG_FATAL, "schemareload",
+                            "Register internal schema.\n");
+            rv = slapi_reload_internal_attr_syntax();
+            slapi_log_error(SLAPI_LOG_FATAL, "schemareload",
+                            "Register internal schema finished.\n");
+
         } else {
             slapi_task_log_notice(task, "Schema reload task failed.");
             slapi_task_log_status(task, "Schema reload task failed.");
@@ -209,8 +216,8 @@ schemareload_destructor(Slapi_Task *task)
     if (task) {
         task_data *mydata = (task_data *)slapi_task_get_data(task);
         if (mydata) {
-	        slapi_ch_free_string(&mydata->schemadir);
-	        slapi_ch_free_string(&mydata->bind_dn);
+            slapi_ch_free_string(&mydata->schemadir);
+            slapi_ch_free_string(&mydata->bind_dn);
             /* Need to cast to avoid a compiler warning */
             slapi_ch_free((void **)&mydata);
         }
diff --git a/ldap/servers/slapd/attrsyntax.c b/ldap/servers/slapd/attrsyntax.c
index 62dfea1..ff137a8 100644
--- a/ldap/servers/slapd/attrsyntax.c
+++ b/ldap/servers/slapd/attrsyntax.c
@@ -56,6 +56,7 @@
 static PLHashTable *oid2asi = NULL;
 /* read/write lock to protect table */
 static Slapi_RWLock *oid2asi_lock = NULL;
+static PLHashTable *internalasi = NULL;
 
 /*
  * This hashtable maps the name or alias of the attribute to the
@@ -911,13 +912,23 @@ attr_syntax_enumerate_internal(PLHashEntry *he, PRIntn i, void *arg)
 	return rc;
 }
 
-void
-attr_syntax_enumerate_attrs(AttrEnumFunc aef, void *arg, PRBool writelock )
+static void
+attr_syntax_enumerate_attrs_ext( PLHashTable *ht,
+                                 AttrEnumFunc aef, void *arg )
 {
 	struct enum_arg_wrapper eaw;
 	eaw.aef = aef;
 	eaw.arg = arg;
 
+	if (!ht)
+		return;
+
+	PL_HashTableEnumerateEntries(ht, attr_syntax_enumerate_internal, &eaw);
+}
+
+void
+attr_syntax_enumerate_attrs(AttrEnumFunc aef, void *arg, PRBool writelock )
+{
 	if (!oid2asi)
 		return;
 
@@ -929,7 +940,7 @@ attr_syntax_enumerate_attrs(AttrEnumFunc aef, void *arg, PRBool writelock )
 		AS_LOCK_READ(name2asi_lock);
 	}
 
-	PL_HashTableEnumerateEntries(oid2asi, attr_syntax_enumerate_internal, &eaw);
+	attr_syntax_enumerate_attrs_ext(oid2asi, aef, arg);
 
 	if ( writelock ) {
 		AS_UNLOCK_WRITE(oid2asi_lock);
@@ -1076,6 +1087,36 @@ slapi_attr_syntax_exists(const char *attr_name)
 }
 
 /*
+ * Keep the internally added schema in the hash table,
+ * which are re-added if the schema is reloaded.
+ */
+static int
+attr_syntax_internal_asi_add_ht(struct asyntaxinfo *asip)
+{
+	if (!internalasi) {
+		internalasi = PL_NewHashTable(64, hashNocaseString,
+		                              hashNocaseCompare,
+		                              PL_CompareValues, 0, 0);
+	}
+	if (!internalasi) {
+		slapi_log_error(SLAPI_LOG_FATAL, "attr_syntax_internal_asi_add_ht",
+		                "Failed to create HashTable.\n");
+		return 1;
+	}
+	if (!PL_HashTableLookup(internalasi, asip->asi_oid)) {
+		struct asyntaxinfo *asip_copy = attr_syntax_dup(asip);
+		if (!asip_copy) {
+			slapi_log_error(SLAPI_LOG_FATAL, "attr_syntax_internal_asi_add_ht",
+		                    "Failed to duplicate asyntaxinfo: %s.\n",
+		                    asip->asi_name);
+			return 1;
+		}
+		PL_HashTableAdd(internalasi, asip_copy->asi_oid, asip_copy);
+	}
+	return 0;
+}
+
+/*
  * Add an attribute syntax using some default flags, etc.
  * Returns an LDAP error code (LDAP_SUCCESS if all goes well)
  */
@@ -1106,7 +1147,43 @@ slapi_add_internal_attr_syntax( const char *name, const char *oid,
 
 	if ( rc == LDAP_SUCCESS ) {
 		rc = attr_syntax_add( asip );
+		if ( rc == LDAP_SUCCESS ) {
+			if (attr_syntax_internal_asi_add_ht(asip)) {
+				slapi_log_error(SLAPI_LOG_FATAL,
+				                "slapi_add_internal_attr_syntax",
+				                "Failed to stash internal asyntaxinfo: %s.\n",
+				                asip->asi_name);
+			}
+		}
 	}
 
 	return rc;
 }
+
+/* Adding internal asyncinfo via slapi_reload_internal_attr_syntax */
+static int
+attr_syntax_internal_asi_add(struct asyntaxinfo *asip, void *arg)
+{
+	struct asyntaxinfo *asip_copy;
+	if (!asip) {
+		return 1;
+	}
+	/* Copy is needed since when reloading the schema,
+	 * existing syntax info is cleaned up. */
+	asip_copy = attr_syntax_dup(asip);
+	return attr_syntax_add(asip_copy);
+}
+
+/* Reload internal attribute syntax stashed in the internalasi hashtable. */
+int
+slapi_reload_internal_attr_syntax()
+{
+	int rc = LDAP_SUCCESS;
+	if (!internalasi) {
+		slapi_log_error(SLAPI_LOG_TRACE, "attr_reload_internal_attr_syntax",
+		                "No internal attribute syntax to reload.\n");
+		return rc;
+	}
+	attr_syntax_enumerate_attrs_ext(internalasi, attr_syntax_internal_asi_add, NULL);
+	return rc;
+}
diff --git a/ldap/servers/slapd/slapi-plugin.h b/ldap/servers/slapd/slapi-plugin.h
index a9d7dfe..4316833 100644
--- a/ldap/servers/slapd/slapi-plugin.h
+++ b/ldap/servers/slapd/slapi-plugin.h
@@ -4871,6 +4871,15 @@ void slapi_filter_normalize(Slapi_Filter *f, PRBool norm_values);
  */
 int slapi_attr_syntax_exists(const char *type);
 
+/**
+ * Reload internally registered attribute syntaxes.
+ *
+ * \param none
+ * \return \c 0 if the reload was successful.
+ * \return non-0 if the reload failed.
+ */
+int slapi_reload_internal_attr_syntax();
+
 /*
  * slapi_filter_apply() is used to apply a function to each simple filter
  * component within a complex filter.  A 'simple filter' is anything other

commit 535511db8738e320c9305442c863b8a7ec11401f
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Mon Sep 24 13:22:09 2012 -0400

    Ticket 477 - CLEANALLRUV if there are only winsync agmts task will hang
    
    Bug Description:  If there are only winsync agmts, the task will loop forever.
    
    Fix Description:  Need to clear a flag after skipping over invalid agmts.  The same issue
                      would apply for agmts that were all disabled.
    
    https://fedorahosted.org/389/ticket/477
    
    Reviewed by: richm(Thanks!)
    (cherry picked from commit 47c44d4e61723bb3013e614c1dafce5b37694e3c)

diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
index 9d47100..c5ca965 100644
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
@@ -1552,6 +1552,7 @@ replica_cleanallruv_thread(void *arg)
             agmt = (Repl_Agmt*)object_get_data (agmt_obj);
             if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) == REPLICA_TYPE_WINDOWS){
                 agmt_obj = agmtlist_get_next_agreement_for_replica (data->replica, agmt_obj);
+                agmt_not_notified = 0;
                 continue;
             }
             if(replica_cleanallruv_send_extop(agmt, data->rid, data->task, data->payload, 1) == 0){
@@ -1605,6 +1606,7 @@ replica_cleanallruv_thread(void *arg)
             agmt = (Repl_Agmt*)object_get_data (agmt_obj);
             if(!agmt_is_enabled(agmt)  || get_agmt_agreement_type(agmt) == REPLICA_TYPE_WINDOWS){
                 agmt_obj = agmtlist_get_next_agreement_for_replica (data->replica, agmt_obj);
+                found_dirty_rid = 0;
                 continue;
             }
             if(replica_cleanallruv_check_ruv(agmt, rid_text, data->task) == 0){
@@ -1698,6 +1700,7 @@ check_agmts_are_caught_up(Replica *replica, ReplicaId rid, char *maxcsn, Slapi_T
             agmt = (Repl_Agmt*)object_get_data (agmt_obj);
             if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) == REPLICA_TYPE_WINDOWS){
                 agmt_obj = agmtlist_get_next_agreement_for_replica (replica, agmt_obj);
+                not_all_caughtup = 0;
                 continue;
             }
             if(replica_cleanallruv_check_maxcsn(agmt, rid_text, maxcsn, task) == 0){
@@ -1753,6 +1756,7 @@ check_agmts_are_alive(Replica *replica, ReplicaId rid, Slapi_Task *task)
             agmt = (Repl_Agmt*)object_get_data (agmt_obj);
             if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) == REPLICA_TYPE_WINDOWS){
                 agmt_obj = agmtlist_get_next_agreement_for_replica (replica, agmt_obj);
+                not_all_alive = 0;
                 continue;
             }
             if(replica_cleanallruv_replica_alive(agmt) == 0){
@@ -2364,6 +2368,7 @@ replica_abort_task_thread(void *arg)
             agmt = (Repl_Agmt*)object_get_data (agmt_obj);
             if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) == REPLICA_TYPE_WINDOWS){
                 agmt_obj = agmtlist_get_next_agreement_for_replica (data->replica, agmt_obj);
+                agmt_not_notified = 0;
                 continue;
             }
             if(replica_cleanallruv_send_abort_extop(agmt, data->task, data->payload)){

commit 969bf99e098e569e52c191177861b03124ce672f
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Mon Sep 24 12:34:59 2012 -0400

    Ticket 457 - dirsrv init script returns 0 even when few or all instances fail to start
    
    Bug Description:  We don't return an error code when one or more instances fails to start.
    
    Fix Description:  Return error 1 when an instance fails to start.
    
    https://fedorahosted.org/389/ticket/457
    
    Reviewed by: richm(Thanks!)
    (cherry picked from commit ef48c93ded0f766d8dab679b976ca032d6297c32)

diff --git a/wrappers/initscript.in b/wrappers/initscript.in
index da5f6bb..7601784 100644
--- a/wrappers/initscript.in
+++ b/wrappers/initscript.in
@@ -264,7 +264,8 @@ start() {
         [ -x /sbin/restorecon ] && /sbin/restorecon $lockfile
     fi
     if [ $errors -ge 1 ]; then
-        echo "  *** Warning: $errors instance(s) failed to start"
+        echo "  *** Error: $errors instance(s) failed to start"
+        exit 1
     fi
 }
 

commit 162f4b104d431523b5458f866776431fab486c7a
Author: Noriko Hosoi <nhosoi at totoro.usersys.redhat.com>
Date:   Mon Sep 24 09:56:50 2012 -0700

    Undo commit db792dbc7141b03bd33b710b79ed0942c34d6530
    
    This ticket should not be applied to 389-ds-base-1.2.11 branch:
        Trac Ticket #466 - entry_apply_mod - ADD: Failed to set
                           unhashed#user#password to extension

diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index f696563..84ce01d 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -1164,13 +1164,6 @@ main( int argc, char **argv)
 		/* init the thread data index for bind dn's */
 		slapi_td_dn_init();
 
-		/* 
-		 * Initialize password storage in entry extension.
-		 * Need to be initialized before plugin_startall in case stucked
-		 * changes are replicated as soon as the replication plugin is started.
-		 */
-		pw_exp_init ();
-
 		plugin_print_lists();
 		plugin_startall(argc, argv, 1 /* Start Backends */, 1 /* Start Globals */); 
 		if (housekeeping_start((time_t)0, NULL) == NULL) {
diff --git a/ldap/servers/slapd/pw_mgmt.c b/ldap/servers/slapd/pw_mgmt.c
index 22d49b7..f173128 100644
--- a/ldap/servers/slapd/pw_mgmt.c
+++ b/ldap/servers/slapd/pw_mgmt.c
@@ -309,8 +309,7 @@ pw_init ( void ) {
 	                                OCTETSTRING_SYNTAX_OID, 0, 
 	                                /* Clients don't need to directly modify
 	                                 * PSEUDO_ATTR_UNHASHEDUSERPASSWORD */
-	                                SLAPI_ATTR_FLAG_NOUSERMOD|
-	                                SLAPI_ATTR_FLAG_NOEXPOSE);
+	                                SLAPI_ATTR_FLAG_NOUSERMOD);
 }
 
 

commit 3383f6718cbfcf597d812557b1167a2a178162cd
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Fri Sep 21 18:17:26 2012 -0400

    Ticket 473 - change VERSION.sh to have console version be major.minor
    
    Removed ".6" from the console version
    
    https://fedorahosted.org/389/ticket/473
    
    Reviewed by: richm(Thanks!)

diff --git a/VERSION.sh b/VERSION.sh
index 757c49f..5062025 100644
--- a/VERSION.sh
+++ b/VERSION.sh
@@ -50,4 +50,4 @@ PACKAGE_BUGREPORT="${PACKAGE_BUGREPORT}enter_bug.cgi?product=$brand"
 PACKAGE_STRING="$PACKAGE_TARNAME $PACKAGE_VERSION"
 # the version of the ds console package that this directory server
 # is compatible with
-CONSOLE_VERSION=$VERSION_MAJOR.$VERSION_MINOR.6
+CONSOLE_VERSION=$VERSION_MAJOR.$VERSION_MINOR

commit 7733afd87119b46cd56e70c4b6fff7b0c67161bb
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Fri Sep 21 18:12:40 2012 -0400

    Ticket 475 - Root DN Access Control - improve value checking for config
    
    Bug Description:  Plugin was not checking the time values, and the "allowed-days"
    
    Fix Description:  Make sure the open and close times are with 0000-2359, and make
                      sure that each day in "rootdn-days-allowed" is a valid day.
    
    https://fedorahosted.org/389/ticket/475
    
    Reviewed by: noriko(Thanks!)

diff --git a/ldap/servers/plugins/rootdn_access/rootdn_access.c b/ldap/servers/plugins/rootdn_access/rootdn_access.c
index bae2703..ad1e125 100644
--- a/ldap/servers/plugins/rootdn_access/rootdn_access.c
+++ b/ldap/servers/plugins/rootdn_access/rootdn_access.c
@@ -219,8 +219,10 @@ rootdn_load_config(Slapi_PBlock *pb)
     Slapi_Entry *e = NULL;
     char *openTime = NULL;
     char *closeTime = NULL;
+    char *token, *iter, *copy;
     char hour[3], min[3];
     int result = 0;
+    int time;
     int i;
 
     slapi_log_error(SLAPI_LOG_PLUGIN, ROOTDN_PLUGIN_SUBSYSTEM, "--> rootdn_load_config\n");
@@ -240,19 +242,41 @@ rootdn_load_config(Slapi_PBlock *pb)
          *  Validate out settings
          */
         if(daysAllowed){
-            if(strcspn(daysAllowed, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ,")){
+            daysAllowed = strToLower(daysAllowed);
+            if(strcspn(daysAllowed, "abcdefghijklmnopqrstuvwxyz ,")){
                 slapi_log_error(SLAPI_LOG_FATAL, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_load_config: "
-                    "invalid rootdn-days-allowed value (%s), must be all letters, and comma separators\n",closeTime);
+                    "invalid rootdn-days-allowed value (%s), must be all letters, and comma separators\n", daysAllowed);
                 slapi_ch_free_string(&daysAllowed);
                 result = -1;
                 goto free_and_return;
             }
-            daysAllowed = strToLower(daysAllowed);
+            /* make sure the "days" are valid "days" */
+            copy = slapi_ch_strdup(daysAllowed);
+            token = ldap_utf8strtok_r(copy, ", ", &iter);
+            while(token){
+                if(strstr("mon tue wed thu fri sat sun",token) == 0){
+                    slapi_log_error(SLAPI_LOG_FATAL, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_load_config: "
+                        "invalid rootdn-days-allowed day value(%s), must be \"Mon, Tue, Wed, Thu, Fri, Sat, or Sun\".\n", token);
+                    slapi_ch_free_string(&daysAllowed);
+                    slapi_ch_free_string(&copy);
+                    result = -1;
+                    goto free_and_return;
+                }
+                token = ldap_utf8strtok_r(iter, ", ", &iter);
+            }
+            slapi_ch_free_string(&copy);
         }
         if(openTime){
             if (strcspn(openTime, "0123456789")){
                 slapi_log_error(SLAPI_LOG_FATAL, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_load_config: "
-                    "invalid rootdn-open-time value (%s), must be all digits\n",openTime);
+                    "invalid rootdn-open-time value (%s), must be all digits\n", openTime);
+                result = -1;
+                goto free_and_return;
+            }
+            time = atoi(openTime);
+            if(time > 2359 || time < 0){
+                slapi_log_error(SLAPI_LOG_FATAL, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_load_config: "
+                    "invalid value for rootdn-open-time value (%s), value must be between 0000-2359\n", openTime);
                 result = -1;
                 goto free_and_return;
             }
@@ -272,13 +296,20 @@ rootdn_load_config(Slapi_PBlock *pb)
         if(closeTime){
             if (strcspn(closeTime, "0123456789")){
                 slapi_log_error(SLAPI_LOG_FATAL, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_load_config: "
-                    "invalid rootdn-open-time value (%s), must be all digits, and should be HHMM\n",closeTime);
+                    "invalid rootdn-close-time value (%s), must be all digits, and should be HHMM\n",closeTime);
+                result = -1;
+                goto free_and_return;
+            }
+            time = atoi(closeTime);
+            if(time > 2359 || time < 0){
+            	slapi_log_error(SLAPI_LOG_FATAL, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_load_config: "
+                    "invalid value for rootdn-close-time value (%s), value must be between 0000-2359\n", closeTime);
                 result = -1;
                 goto free_and_return;
             }
             if(strlen(closeTime) != 4){
                 slapi_log_error(SLAPI_LOG_FATAL, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_load_config: "
-                    "invalid format for rootdn-open-time value (%s), should be HHMM\n", closeTime);
+                    "invalid format for rootdn-close-time value (%s), should be HHMM\n", closeTime);
                 result = -1;
                 goto free_and_return;
             }
@@ -661,7 +692,7 @@ char *
 strToLower(char *str){
     int i;
 
-    for(i = 0; i < strlen(str); i++){
+    for(i = 0; str && i < strlen(str); i++){
         str[i] = tolower(str[i]);
     }
     return str;

commit db792dbc7141b03bd33b710b79ed0942c34d6530
Author: Noriko Hosoi <nhosoi at totoro.usersys.redhat.com>
Date:   Fri Sep 21 14:12:15 2012 -0700

    Trac Ticket #466 - entry_apply_mod - ADD: Failed to set
        unhashed#user#password to extension
    
    https://fedorahosted.org/389/ticket/466
    
    Bug Description: If changes are stuck in the chagnelog and the
    server is restarted, the changes are being replicated as soon
    as plugin_startall is called.  At the point, the entry extension
    has to be already initialized.
    
    Fix Description: The entry extension initialization which used
    to be called in pw_init.  Now it is moved to just before
    plugin_startall in main.
    (cherry picked from commit 91d98369a214a45cd5c8ed716a55ccaf063c6f1d)

diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index 84ce01d..f696563 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -1164,6 +1164,13 @@ main( int argc, char **argv)
 		/* init the thread data index for bind dn's */
 		slapi_td_dn_init();
 
+		/* 
+		 * Initialize password storage in entry extension.
+		 * Need to be initialized before plugin_startall in case stucked
+		 * changes are replicated as soon as the replication plugin is started.
+		 */
+		pw_exp_init ();
+
 		plugin_print_lists();
 		plugin_startall(argc, argv, 1 /* Start Backends */, 1 /* Start Globals */); 
 		if (housekeeping_start((time_t)0, NULL) == NULL) {
diff --git a/ldap/servers/slapd/pw_mgmt.c b/ldap/servers/slapd/pw_mgmt.c
index f6f3cf3..22d49b7 100644
--- a/ldap/servers/slapd/pw_mgmt.c
+++ b/ldap/servers/slapd/pw_mgmt.c
@@ -309,7 +309,8 @@ pw_init ( void ) {
 	                                OCTETSTRING_SYNTAX_OID, 0, 
 	                                /* Clients don't need to directly modify
 	                                 * PSEUDO_ATTR_UNHASHEDUSERPASSWORD */
-	                                SLAPI_ATTR_FLAG_NOUSERMOD );
+	                                SLAPI_ATTR_FLAG_NOUSERMOD|
+	                                SLAPI_ATTR_FLAG_NOEXPOSE);
 }
 
 

commit 2689bcbcaf4ea4b91c5b5f1c03af3dc676bb93a4
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Fri Sep 21 16:05:55 2012 -0400

    Ticket 474 - Root DN Access Control - days allowed not working correctly
    
    Bug Description:  If you set more than one day in the rootdn-days-allowed config
                      attribute the plugin can reject all rootDN binds.
    
    Fix Description:  Correct the order of the char strings in strstr().
    
    https://fedorahosted.org/389/ticket/474
    
    Reviewed by: richm(Thanks!)

diff --git a/ldap/servers/plugins/rootdn_access/rootdn_access.c b/ldap/servers/plugins/rootdn_access/rootdn_access.c
index 19e578c..bae2703 100644
--- a/ldap/servers/plugins/rootdn_access/rootdn_access.c
+++ b/ldap/servers/plugins/rootdn_access/rootdn_access.c
@@ -440,8 +440,9 @@ rootdn_check_access(Slapi_PBlock *pb){
         memmove(day, timestr, 3); // we only want the day
         today = strToLower(today);
 
-        if(!strstr(today, daysAllowed)){
-            slapi_log_error(SLAPI_LOG_PLUGIN, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_check_access: bind not allowed for today\n");
+        if(!strstr(daysAllowed, today)){
+            slapi_log_error(SLAPI_LOG_PLUGIN, ROOTDN_PLUGIN_SUBSYSTEM, "rootdn_check_access: bind not allowed for today(%s), "
+                "only allowed on days: %s\n", today, daysAllowed);
             return -1;
         }
     }

commit 822199e809b6100dfd908eb308eacf81956b3f34
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Fri Sep 21 12:49:09 2012 -0400

    Ticket 467 - CLEANALLRUV abort task should be able to ignore down replicas
    
    Bug Description:  The abort task previously would wait for all the replicas to be online,
                      and receive the extended op task.  This made it impossible to abort the
                      cleanallruv task, if you wanted to abort because a server was down.
    
    Fix Description:  Changed the default behavior to ignore down replicas, and added a new attribute
                      to the abort task entry:  replica-certify-all: (yes,no).  Default is "no". If
                      set to "yes", then it will wait until all the replicas have received the abort task.
    
                      Also fixed a crash caused by running the abort task agsint a server that does not have
                      replication setup.  The crashed was caused by freeing uninitialized pointers.
    
    https://fedorahosted.org/389/ticket/467
    
    Reviewed by: richm(Thanks!)

diff --git a/ldap/servers/plugins/replication/repl5.h b/ldap/servers/plugins/replication/repl5.h
index 7b6cb8c..61b51b0 100644
--- a/ldap/servers/plugins/replication/repl5.h
+++ b/ldap/servers/plugins/replication/repl5.h
@@ -642,6 +642,7 @@ typedef struct _cleanruv_data
 	CSN *maxcsn;
 	char *repl_root;
 	Slapi_DN *sdn;
+	char *certify;
 } cleanruv_data;
 
 /* replutil.c */
diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c
index 9e0fb24..2b1d958 100644
--- a/ldap/servers/plugins/replication/repl5_replica.c
+++ b/ldap/servers/plugins/replication/repl5_replica.c
@@ -1914,6 +1914,7 @@ done:
         char *ridstr = NULL;
         char *repl_root;
         char *token = NULL;
+        char *certify = NULL;
         ReplicaId rid;
         int i;
 
@@ -1935,6 +1936,7 @@ done:
             }
 
             repl_root = ldap_utf8strtok_r(iter, ":", &iter);
+            certify = ldap_utf8strtok_r(iter, ":", &iter);
             stop_ruv_cleaning();
             maxcsn = replica_get_cleanruv_maxcsn(r, rid);
             delete_cleaned_rid(r, rid, maxcsn);
@@ -1966,6 +1968,7 @@ done:
                     data->payload = payload;
                     data->repl_root = slapi_ch_strdup(repl_root);
                     data->sdn = slapi_sdn_dup(r->repl_root);
+                    data->certify = slapi_ch_strdup(certify);
 
                     thread = PR_CreateThread(PR_USER_THREAD, replica_abort_task_thread,
                             (void *)data, PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD,
@@ -1976,6 +1979,7 @@ done:
                         slapi_sdn_free(&data->sdn);
                         ber_bvfree(data->payload);
                         slapi_ch_free_string(&data->repl_root);
+                        slapi_ch_free_string(&data->certify);
                         slapi_ch_free((void **)&data);
                     }
                 }
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
index f22d2de..9d47100 100644
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
@@ -1262,7 +1262,8 @@ replica_cleanall_ruv_task(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter,
         PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "Invalid replica id (%d) for task - (%s)",
             rid, slapi_sdn_get_dn(task_dn));
         cleanruv_log(task, CLEANALLRUV_ID, "%s", returntext);
-        rc = LDAP_OPERATIONS_ERROR;
+        *returncode = LDAP_OPERATIONS_ERROR;
+        rc = SLAPI_DSE_CALLBACK_ERROR;
         goto out;
     }
     /*
@@ -1270,7 +1271,9 @@ replica_cleanall_ruv_task(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter,
      */
     dn = slapi_sdn_new_dn_byval(base_dn);
     if((r = replica_get_replica_from_dn(dn)) == NULL){
-        *returncode = LDAP_OPERATIONS_ERROR ;
+        PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "Could not find replica from dn(%s)",slapi_sdn_get_dn(dn));
+        cleanruv_log(task, CLEANALLRUV_ID, "%s", returntext);
+        *returncode = LDAP_OPERATIONS_ERROR;
         rc = SLAPI_DSE_CALLBACK_ERROR;
         goto out;
     }
@@ -1281,9 +1284,7 @@ replica_cleanall_ruv_task(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter,
 out:
     if(rc){
         cleanruv_log(task, CLEANALLRUV_ID, "Task failed...(%d)", rc);
-        *returncode = rc;
         slapi_task_finish(task, *returncode);
-        rc = SLAPI_DSE_CALLBACK_ERROR;
     } else {
         rc = SLAPI_DSE_CALLBACK_OK;
     }
@@ -2182,18 +2183,19 @@ replica_cleanall_ruv_abort(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter
     Replica *replica;
     ReplicaId rid;
     cleanruv_data *data = NULL;
-    Slapi_DN *sdn;
+    Slapi_DN *sdn = NULL;
     Object *r;
-    CSN *maxcsn;
+    CSN *maxcsn = NULL;
     const char *base_dn;
     const char *rid_str;
-    char *ridstr;
+    const char *certify_all;
+    char *ridstr = NULL;
     int rc = SLAPI_DSE_CALLBACK_OK;
 
     if(get_abort_cleanruv_task_count() >= CLEANRIDSIZ){
         /* we are already running the maximum number of tasks */
-        cleanruv_log(task, ABORT_CLEANALLRUV_ID,
-    	    "Exceeded maximum number of active ABORT CLEANALLRUV tasks(%d)",CLEANRIDSIZ);
+        PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "Exceeded maximum number of active ABORT CLEANALLRUV tasks(%d)",CLEANRIDSIZ);
+        cleanruv_log(task, ABORT_CLEANALLRUV_ID, "%s", returntext);
         *returncode = LDAP_OPERATIONS_ERROR;
         return SLAPI_DSE_CALLBACK_ERROR;
     }
@@ -2204,17 +2206,20 @@ replica_cleanall_ruv_abort(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter
      *  Get our task settings
      */
     if ((rid_str = fetch_attr(e, "replica-id", 0)) == NULL){
-        cleanruv_log(task, ABORT_CLEANALLRUV_ID,"Missing required attr \"replica-id\"");
+        PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "Missing required attr \"replica-id\"");
+        cleanruv_log(task, ABORT_CLEANALLRUV_ID, "%s", returntext);
         *returncode = LDAP_OBJECT_CLASS_VIOLATION;
         rc = SLAPI_DSE_CALLBACK_ERROR;
         goto out;
     }
     if ((base_dn = fetch_attr(e, "replica-base-dn", 0)) == NULL){
-        cleanruv_log(task, ABORT_CLEANALLRUV_ID,"Missing required attr \"replica-base-dn\"");
+        PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "Missing required attr \"replica-base-dn\"");
+        cleanruv_log(task, ABORT_CLEANALLRUV_ID, "%s", returntext);
         *returncode = LDAP_OBJECT_CLASS_VIOLATION;
         rc = SLAPI_DSE_CALLBACK_ERROR;
         goto out;
     }
+    certify_all = fetch_attr(e, "replica-certify-all", 0);
     /*
      *  Check the rid
      */
@@ -2232,15 +2237,31 @@ replica_cleanall_ruv_abort(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter
      */
     sdn = slapi_sdn_new_dn_byval(base_dn);
     if((r = replica_get_replica_from_dn(sdn)) == NULL){
-        cleanruv_log(task, ABORT_CLEANALLRUV_ID,"Failed to find replica from dn(%s)", base_dn);
+        PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "Failed to find replica from dn(%s)", base_dn);
+        cleanruv_log(task, ABORT_CLEANALLRUV_ID, "%s", returntext);
         *returncode = LDAP_OPERATIONS_ERROR;
         rc = SLAPI_DSE_CALLBACK_ERROR;
         goto out;
     }
     /*
+     *  Check verify value
+     */
+    if(certify_all){
+        if(strcasecmp(certify_all,"yes") && strcasecmp(certify_all,"no")){
+            PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "Invalid value for \"replica-certify-all\", the value "
+                "must be \"yes\" or \"no\".");
+            cleanruv_log(task, ABORT_CLEANALLRUV_ID, "%s", returntext);
+            *returncode = LDAP_OPERATIONS_ERROR;
+            rc = SLAPI_DSE_CALLBACK_ERROR;
+            goto out;
+        }
+    } else {
+        certify_all = "no";
+    }
+    /*
      *  Create payload
      */
-    ridstr = slapi_ch_smprintf("%d:%s", rid, base_dn);
+    ridstr = slapi_ch_smprintf("%d:%s:%s", rid, base_dn, certify_all);
     payload = create_ruv_payload(ridstr);
 
     if(payload == NULL){
@@ -2274,6 +2295,7 @@ replica_cleanall_ruv_abort(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter
     data->rid = rid;
     data->repl_root = slapi_ch_strdup(base_dn);
     data->sdn = NULL;
+    data->certify = slapi_ch_strdup(certify_all);
 
     thread = PR_CreateThread(PR_USER_THREAD, replica_abort_task_thread,
                 (void *)data, PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD,
@@ -2286,7 +2308,6 @@ replica_cleanall_ruv_abort(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter
     }
 
 out:
-
     csn_free(&maxcsn);
     slapi_ch_free_string(&ridstr);
     slapi_sdn_free(&sdn);
@@ -2321,7 +2342,7 @@ replica_abort_task_thread(void *arg)
          * to timing issues, we need to wait to grab the replica obj until we get here.
          */
         if((data->repl_obj = replica_get_replica_from_dn(data->sdn)) == NULL){
-            cleanruv_log(data->task, ABORT_CLEANALLRUV_ID, "Failed to get replica from dn (%s).", slapi_sdn_get_dn(data->sdn));
+            cleanruv_log(data->task, ABORT_CLEANALLRUV_ID, "Failed to get replica object from dn (%s).", slapi_sdn_get_dn(data->sdn));
             goto done;
         }
         if(data->replica == NULL && data->repl_obj){
@@ -2335,6 +2356,10 @@ replica_abort_task_thread(void *arg)
      */
     while(agmt_not_notified && !slapi_is_shutting_down()){
         agmt_obj = agmtlist_get_first_agreement_for_replica (data->replica);
+        if(agmt_obj == NULL){
+        	agmt_not_notified = 0;
+        	break;
+        }
         while (agmt_obj){
             agmt = (Repl_Agmt*)object_get_data (agmt_obj);
             if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) == REPLICA_TYPE_WINDOWS){
@@ -2342,8 +2367,14 @@ replica_abort_task_thread(void *arg)
                 continue;
             }
             if(replica_cleanallruv_send_abort_extop(agmt, data->task, data->payload)){
-                agmt_not_notified = 1;
-                break;
+                if(strcasecmp(data->certify,"yes") == 0){
+                    /* we are verifying all the replicas receive the abort task */
+                    agmt_not_notified = 1;
+                    break;
+                } else {
+                    /* we do not care if we could not reach a replica, just continue as if we did */
+                    agmt_not_notified = 0;
+                }
             } else {
                 /* success */
                 agmt_not_notified = 0;
@@ -2373,7 +2404,7 @@ replica_abort_task_thread(void *arg)
 done:
     if(agmt_not_notified){
         /* failure */
-    	cleanruv_log(data->task, ABORT_CLEANALLRUV_ID,"Abort task failed, will resume the task at the next server startup.");
+        cleanruv_log(data->task, ABORT_CLEANALLRUV_ID,"Abort task failed, will resume the task at the next server startup.");
     } else {
         /*
          *  Clean up the config
@@ -2390,6 +2421,7 @@ done:
         ber_bvfree(data->payload);
     }
     slapi_ch_free_string(&data->repl_root);
+    slapi_ch_free_string(&data->certify);
     slapi_sdn_free(&data->sdn);
     slapi_ch_free((void **)&data);
 }
diff --git a/ldap/servers/plugins/replication/repl_extop.c b/ldap/servers/plugins/replication/repl_extop.c
index 645e749..1b72dfb 100644
--- a/ldap/servers/plugins/replication/repl_extop.c
+++ b/ldap/servers/plugins/replication/repl_extop.c
@@ -1455,6 +1455,7 @@ multimaster_extop_abort_cleanruv(Slapi_PBlock *pb)
 	char *extop_oid;
 	char *repl_root;
 	char *payload = NULL;
+	char *certify_all;
 	char *iter;
 	int rc = 0;
 
@@ -1475,6 +1476,7 @@ multimaster_extop_abort_cleanruv(Slapi_PBlock *pb)
 	}
 	rid = atoi(ldap_utf8strtok_r(payload, ":", &iter));
 	repl_root = ldap_utf8strtok_r(iter, ":", &iter);
+	certify_all = ldap_utf8strtok_r(iter, ":", &iter);
 
 	if(!is_cleaned_rid(rid) || is_task_aborted(rid)){
 		/* This replica has already been aborted, or was never cleaned, or already finished cleaning */
@@ -1521,6 +1523,7 @@ multimaster_extop_abort_cleanruv(Slapi_PBlock *pb)
 	data->payload = slapi_ch_bvdup(extop_payload);
 	data->rid = rid;
 	data->repl_root = slapi_ch_strdup(repl_root);
+	data->certify = slapi_ch_strdup(certify_all);
 	/*
 	 *  Stop the cleaning, and delete the rid
 	 */
@@ -1541,6 +1544,8 @@ multimaster_extop_abort_cleanruv(Slapi_PBlock *pb)
 		}
 		slapi_log_error( SLAPI_LOG_REPL, repl_plugin_name, "Abort cleanAllRUV task: unable to create abort "
 			"thread.  Aborting task.\n");
+		slapi_ch_free_string(&data->repl_root);
+		slapi_ch_free_string(&data->certify);
 		rc = LDAP_OPERATIONS_ERROR;
 	}
 

commit 0b79915854da26aae0d17f509f168290926cf14f
Author: Rich Megginson <rmeggins at redhat.com>
Date:   Fri Sep 14 13:57:22 2012 -0600

    fix compiler warnings in ticket 374 code
    (cherry picked from commit 1f775d7339cdabde70e73ce0be2e4432b16ba1a3)

diff --git a/ldap/servers/plugins/replication/repl_extop.c b/ldap/servers/plugins/replication/repl_extop.c
index ca8fc55..645e749 100644
--- a/ldap/servers/plugins/replication/repl_extop.c
+++ b/ldap/servers/plugins/replication/repl_extop.c
@@ -46,7 +46,10 @@
 #include "repl5.h"
 #include "repl5_prot_private.h"
 #include "cl5_api.h"
-
+#define ENABLE_TEST_TICKET_374
+#ifdef ENABLE_TEST_TICKET_374
+#include <unistd.h> /* for usleep */
+#endif
 
 /*
  * repl_extop.c - there are two types of functions in this file:
@@ -902,13 +905,12 @@ multimaster_extop_StartNSDS50ReplicationRequest(Slapi_PBlock *pb)
 	}
 
 	/* remove this code once ticket 374 is fixed */
-#define ENABLE_TEST_TICKET_374
 #ifdef ENABLE_TEST_TICKET_374
 	if (getenv("SLAPD_TEST_TICKET_374") && (opid > 20)) {
 		int i = 0;
 		int max = 480 * 5;
 		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
-						"conn=%d op=%d repl=\"%s\": "
+						"conn=%" NSPRIu64 " op=%d repl=\"%s\": "
 						"374 - Starting sleep: connext->repl_protocol_version == %d\n",
 						connid, opid, repl_root, connext->repl_protocol_version);
         
@@ -917,7 +919,7 @@ multimaster_extop_StartNSDS50ReplicationRequest(Slapi_PBlock *pb)
 		}
         
 		slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
-						"conn=%d op=%d repl=\"%s\": "
+						"conn=%" NSPRIu64 " op=%d repl=\"%s\": "
 						"374 - Finished sleep: connext->repl_protocol_version == %d\n",
 						connid, opid, repl_root, connext->repl_protocol_version);
 	}



More information about the Pkg-fedora-ds-maintainers mailing list