X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foverlays%2Fsyncprov.c;h=e7bddebcee8736e55e72e8f18a585374f731e7c4;hb=01f698bce979660270207ce052f3bdbbd79365a5;hp=25f0a1ae379f069ed1ec2e74aac2538daa7c958a;hpb=0fc0ccdc0c66c4948a5d8bc51ddc6c622df6a3a0;p=openldap diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index 25f0a1ae37..e7bddebcee 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -2,7 +2,7 @@ /* syncprov.c - syncrepl provider */ /* This work is part of OpenLDAP Software . * - * Copyright 2004-2012 The OpenLDAP Foundation. + * Copyright 2004-2014 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,9 +28,7 @@ #include "config.h" #include "ldap_rq.h" -#ifdef LDAP_DEVEL #define CHECK_CSN 1 -#endif /* A modify request on a particular entry */ typedef struct modinst { @@ -444,6 +442,7 @@ syncprov_findbase( Operation *op, fbase_cookie *fc ) fop.o_hdr = op->o_hdr; fop.o_time = op->o_time; fop.o_tincr = op->o_tincr; + fop.o_extra = op->o_extra; cb.sc_response = findbase_cb; cb.sc_private = fc; @@ -451,7 +450,6 @@ syncprov_findbase( Operation *op, fbase_cookie *fc ) fop.o_sync_mode = 0; /* turn off sync mode */ fop.o_managedsait = SLAP_CONTROL_CRITICAL; fop.o_callback = &cb; - LDAP_SLIST_INIT( &fop.o_extra ); fop.o_tag = LDAP_REQ_SEARCH; fop.ors_scope = LDAP_SCOPE_BASE; fop.ors_limit = NULL; @@ -3172,6 +3170,7 @@ syncprov_db_close( #ifdef SLAP_CONFIG_DELETE if ( !slapd_shutdown ) { + ldap_pvt_thread_mutex_lock( &si->si_ops_mutex ); for ( so=si->si_ops, sonext=so; so; so=sonext ) { SlapReply rs = {REP_RESULT}; rs.sr_err = LDAP_UNAVAILABLE; @@ -3180,6 +3179,7 @@ syncprov_db_close( syncprov_drop_psearch( so, 0); } si->si_ops=NULL; + ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex ); } overlay_unregister_control( be, LDAP_CONTROL_SYNC ); #endif /* SLAP_CONFIG_DELETE */