X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fsyncrepl.c;h=0c4bb5b9787cb3b075e79e6d5dace216cc25810a;hb=ef7f5f5e32e6e0f129aee7fa1626017a7dadcb48;hp=717827084966b6097677d1987101df9e03f7c3f3;hpb=ff7acea2d25b4037f93431909512aeedba33127c;p=openldap diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 7178270849..0c4bb5b978 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -823,7 +823,7 @@ do_syncrep2( slap_dup_sync_cookie( &syncCookie_req, &si->si_syncCookie ); - if ( abs(si->si_type) == LDAP_SYNC_REFRESH_AND_PERSIST ) { + if ( abs(si->si_type) == LDAP_SYNC_REFRESH_AND_PERSIST && si->si_refreshDone ) { tout_p = &tout; } else { tout_p = NULL; @@ -1241,6 +1241,9 @@ do_syncrep2( si->si_refreshDone = 1; } ber_scanf( ber, /*"{"*/ "}" ); + if ( abs(si->si_type) == LDAP_SYNC_REFRESH_AND_PERSIST && + si->si_refreshDone ) + tout_p = &tout; break; case LDAP_TAG_SYNC_ID_SET: Debug( LDAP_DEBUG_SYNC, @@ -1842,7 +1845,12 @@ static Modifications *mods_dup( Operation *op, Modifications *modlist, int match for (i=0; isml_numvals; i++) mod->sml_nvalues[i] = modlist->sml_nvalues[i]; BER_BVZERO(&mod->sml_nvalues[i]); + } else { + mod->sml_nvalues = NULL; } + } else { + mod->sml_values = NULL; + mod->sml_nvalues = NULL; } if ( match < 0 && modlist->sml_op == LDAP_MOD_REPLACE ) mod->sml_op = LDAP_MOD_ADD; @@ -2069,8 +2077,12 @@ syncrepl_op_modify( Operation *op, SlapReply *rs ) Modifications *ml; int size, rc; SlapReply rs1 = {0}; - resolve_ctxt rx = { si, newlist }; - slap_callback cb = { NULL, syncrepl_resolve_cb, NULL, &rx }; + resolve_ctxt rx; + slap_callback cb = { NULL, syncrepl_resolve_cb, NULL, NULL }; + + rx.rx_si = si; + rx.rx_mods = newlist; + cb.sc_private = ℞ op2.o_tag = LDAP_REQ_SEARCH; op2.ors_scope = LDAP_SCOPE_SUBTREE;