X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fctxcsn.c;h=0fe59b9f00b48e34d85091f5e83f86057d652915;hb=12d5c6bba210de4a03363567be1c19a37f8e806b;hp=d4d44b9e39b34829331d2846120067d0e1e72dd8;hpb=76dd417dc9ec1b38bb05b9c1df2fa4ba49bc0466;p=openldap diff --git a/servers/slapd/ctxcsn.c b/servers/slapd/ctxcsn.c index d4d44b9e39..0fe59b9f00 100644 --- a/servers/slapd/ctxcsn.c +++ b/servers/slapd/ctxcsn.c @@ -1,23 +1,18 @@ +/* ctxcsn.c -- Context CSN Management Routines */ /* $OpenLDAP$ */ -/* - * Context CSN Management Routines - */ -/* Copyright (c) 2003 by International Business Machines, Inc. +/* This work is part of OpenLDAP Software . + * + * Copyright 2003 The OpenLDAP Foundation. + * Portions Copyright 2003 IBM Corporation. + * All rights reserved. * - * International Business Machines, Inc. (hereinafter called IBM) grants - * permission under its copyrights to use, copy, modify, and distribute this - * Software with or without fee, provided that the above copyright notice and - * all paragraphs of this notice appear in all copies, and that the name of IBM - * not be used in connection with the marketing of any product incorporating - * the Software or modifications thereof, without specific, written prior - * permission. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. * - * THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, - * DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN - * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . */ #include "portable.h" @@ -26,7 +21,6 @@ #include #include -#include #include "ldap_pvt.h" #include "lutil.h" @@ -94,6 +88,12 @@ slap_graduate_commit_csn( Operation *op ) { struct slap_csn_entry *csne = NULL; + if ( op == NULL ) + return; + + if ( op->o_bd == NULL ) + return; + ldap_pvt_thread_mutex_lock( &op->o_bd->be_pcl_mutex ); LDAP_TAILQ_FOREACH( csne, &op->o_bd->be_pending_csn_list, csn_link ) { @@ -182,15 +182,13 @@ slap_get_csn( if ( csn == NULL ) return LDAP_OTHER; - if ( manage_ctxcsn ) { - pending = (struct slap_csn_entry *) ch_calloc( 1, sizeof( struct slap_csn_entry )); - } - csn->bv_len = lutil_csnstr( csnbuf, len, 0, 0 ); csn->bv_val = csnbuf; if ( manage_ctxcsn ) { + pending = (struct slap_csn_entry *) ch_calloc( 1, sizeof( struct slap_csn_entry )); ldap_pvt_thread_mutex_lock( &op->o_bd->be_pcl_mutex ); + ber_dupbv( &op->o_sync_csn, csn ); pending->csn = ber_dupbv( NULL, csn ); pending->connid = op->o_connid; pending->opid = op->o_opid;