]> git.sur5r.net Git - openldap/commitdiff
- change in message to modlist conversion
authorJong Hyuk Choi <jongchoi@openldap.org>
Tue, 20 May 2003 01:45:12 +0000 (01:45 +0000)
committerJong Hyuk Choi <jongchoi@openldap.org>
Tue, 20 May 2003 01:45:12 +0000 (01:45 +0000)
include/lber.h
libraries/liblber/io.c
servers/slapd/syncrepl.c
tests/scripts/test017-syncreplication

index 87b01d07b1216e681d114f22399222f2b318a22e..20095179a61726c01191697d43243d06e058f109 100644 (file)
@@ -476,6 +476,10 @@ ber_flatten2 LDAP_P((
        struct berval *bv,
        int alloc ));
 
+LBER_F( int )
+ber_remaining LDAP_P((
+       BerElement *ber ));
+
 /*
  * LBER ber accessor functions
  */
index 65ff26cf1f41192c101bd8b134932f6ec454c7ba..2f60e27ca85acb2d49ce1d7f9f6f3a34cfee9c95 100644 (file)
@@ -717,3 +717,9 @@ ber_rewind ( BerElement * ber )
        ber->ber_end = ber->ber_ptr;
        ber->ber_ptr = ber->ber_buf;
 }
+
+int
+ber_remaining( BerElement * ber )
+{
+       return ber_pvt_ber_remaining( ber );
+}
index 923d4ecb72042866007818bcc703c7a1c5f4cc4b..b12ecd2cb6ff869b8fa77b20558b3ef373ea903b 100644 (file)
@@ -500,7 +500,7 @@ do_syncrepl(
                                        entry_free( entry );
                                for ( ml = modlist; ml != NULL; ml = mlnext ) {
                                        mlnext = ml->sml_next;
-                                       free( ml );
+                                       ber_memfree( ml );
                                }
                                break;
 
@@ -699,6 +699,8 @@ syncrepl_message_to_entry(
        LDAPControl**   rctrls = NULL;
        BerElement*     ctrl_ber;
 
+       ber_tag_t       tag;
+
        *modlist = NULL;
 
        if ( ldap_msgtype( msg ) != LDAP_RES_SEARCH_ENTRY ) {
@@ -732,10 +734,10 @@ syncrepl_message_to_entry(
 
        e->e_attrs = NULL;
 
-       for ( rc = ldap_get_attribute_ber( ld, msg, ber, &tmp.sml_type, &tmp.sml_bvalues);
-                 rc == LDAP_SUCCESS;
-                 rc = ldap_get_attribute_ber( ld, msg, ber, &tmp.sml_type, &tmp.sml_bvalues))
-       {
+       while ( ber_remaining( ber ) ) {
+               tag = ber_scanf( ber, "{mW}", &tmp.sml_type, &tmp.sml_values );
+
+               if ( tag == LBER_ERROR ) break;
                if ( tmp.sml_type.bv_val == NULL ) break;
 
                mod  = (Modifications *) ch_malloc( sizeof( Modifications ));
@@ -862,7 +864,7 @@ done:
        return e;
 }
 
-int 
+int
 syncuuid_cmp( const void* v_uuid1, const void* v_uuid2 )
 {
        const struct berval *uuid1 = v_uuid1;
index ae4fec3a443637a2aebebe9f7ad2b1ae5894cdf3..fe555213338237e5793fed68c7d7fb4989901564 100755 (executable)
@@ -39,6 +39,9 @@ if test $WAIT != 0 ; then
     read foo
 fi
 
+echo "Waiting 5 seconds to wait for master to start..."
+sleep 5
+
 echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
 . $CONFFILTER $BACKEND $MONITORDB < $SRSLAVECONF > $REPLCONF
 $SLAPD -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 &