X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foverlays%2Fdds.c;h=f6c30951b0754e016a59e9bfdfbead52d3752ef8;hb=bfd8b3a42aa44d317acd686e786ed4be681b2337;hp=f8b2dab5140d297b194522eef4bb88ad68fdc426;hpb=ad79308d5a9fbd480279e62f4dd04769553e4fd1;p=openldap diff --git a/servers/slapd/overlays/dds.c b/servers/slapd/overlays/dds.c index f8b2dab514..f6c30951b0 100644 --- a/servers/slapd/overlays/dds.c +++ b/servers/slapd/overlays/dds.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2005-2012 The OpenLDAP Foundation. + * Copyright 2005-2014 The OpenLDAP Foundation. * Portions Copyright 2005-2006 SysNet s.n.c. * All rights reserved. * @@ -1733,8 +1733,15 @@ dds_db_open( di->di_suffix = be->be_suffix; di->di_nsuffix = be->be_nsuffix; - /* ... so that count, if required, is accurate */ - if ( di->di_max_dynamicObjects > 0 ) { + /* count the dynamic objects first */ + rc = dds_count( thrctx, be ); + if ( rc != LDAP_SUCCESS ) { + rc = 1; + goto done; + } + + /* ... if there are dynamic objects, delete those expired */ + if ( di->di_num_dynamicObjects > 0 ) { /* force deletion of expired entries... */ be->bd_info = (BackendInfo *)on->on_info; rc = dds_expire( thrctx, di ); @@ -1743,12 +1750,6 @@ dds_db_open( rc = 1; goto done; } - - rc = dds_count( thrctx, be ); - if ( rc != LDAP_SUCCESS ) { - rc = 1; - goto done; - } } /* start expire task */