From: Ralf Haferkamp Date: Thu, 10 Dec 2009 11:56:52 +0000 (+0000) Subject: ITS#6428 apply global sizelimit changes to all databases X-Git-Tag: ACLCHECK_0~5 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a0540f187c2f5e7058106b0adf1870015112abce;p=openldap ITS#6428 apply global sizelimit changes to all databases --- diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 7b41dd2614..ae6dc4833f 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -2215,7 +2215,7 @@ config_sizelimit(ConfigArgs *c) { lim->lms_s_pr = 0; lim->lms_s_pr_hide = 0; lim->lms_s_pr_total = 0; - return 0; + goto ok; } for(i = 1; i < c->argc; i++) { if(!strncasecmp(c->argv[i], "size", 4)) { @@ -2240,6 +2240,30 @@ config_sizelimit(ConfigArgs *c) { lim->lms_s_hard = 0; } } + +ok: + if ( ( c->be == frontendDB ) && ( c->ca_entry ) ) { + /* This is a modification to the global limits apply it to + * the other databases as needed */ + AttributeDescription *ad=NULL; + const char *text = NULL; + slap_str2ad(c->argv[0], &ad, &text); + /* if we got here... */ + assert( ad != NULL ); + + CfEntryInfo *ce = c->ca_entry->e_private; + for ( ce=ce->ce_sibs ;ce;ce=ce->ce_sibs) { + Entry *dbe = ce->ce_entry; + if (! attr_find( dbe->e_attrs, ad ) ) { + ce->ce_be->be_def_limit.lms_s_soft = lim->lms_s_soft; + ce->ce_be->be_def_limit.lms_s_hard = lim->lms_s_hard; + ce->ce_be->be_def_limit.lms_s_unchecked =lim->lms_s_unchecked; + ce->ce_be->be_def_limit.lms_s_pr =lim->lms_s_pr; + ce->ce_be->be_def_limit.lms_s_pr_hide =lim->lms_s_pr_hide; + ce->ce_be->be_def_limit.lms_s_pr_total =lim->lms_s_pr_total; + } + } + } return(0); }