mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-24 13:24:56 +08:00
use be_ctrls[cid] for counting the number of overlay instances that have
registered the control for a specific BackendDB to make sure that the control is unregistered only after the last instance calls overlay_unregister_control().
This commit is contained in:
parent
81dcd3ca58
commit
beb536298d
@ -1074,14 +1074,22 @@ overlay_register_control( BackendDB *be, const char *oid )
|
||||
gotit = 1;
|
||||
}
|
||||
|
||||
bd->be_ctrls[ cid ] = 1;
|
||||
/* overlays can be instanciated multiple times, use
|
||||
* be_ctrls[ cid ] as an instance counter, so that the
|
||||
* overlay's controls are only really disabled after the
|
||||
* last instance called overlay_register_control() */
|
||||
bd->be_ctrls[ cid ]++;
|
||||
bd->be_ctrls[ SLAP_MAX_CIDS ] = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ( !gotit ) {
|
||||
be->bd_self->be_ctrls[ cid ] = 1;
|
||||
/* overlays can be instanciated multiple times, use
|
||||
* be_ctrls[ cid ] as an instance counter, so that the
|
||||
* overlay's controls are only really unregistered after the
|
||||
* last instance called overlay_register_control() */
|
||||
be->bd_self->be_ctrls[ cid ]++;
|
||||
be->bd_self->be_ctrls[ SLAP_MAX_CIDS ] = 1;
|
||||
}
|
||||
|
||||
@ -1108,12 +1116,12 @@ overlay_unregister_control( BackendDB *be, const char *oid )
|
||||
gotit = 1;
|
||||
}
|
||||
|
||||
bd->be_ctrls[ cid ] = 0;
|
||||
bd->be_ctrls[ cid ]--;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !gotit ) {
|
||||
be->bd_self->be_ctrls[ cid ] = 0;
|
||||
be->bd_self->be_ctrls[ cid ]--;
|
||||
}
|
||||
}
|
||||
#endif /* SLAP_CONFIG_DELETE */
|
||||
|
Loading…
Reference in New Issue
Block a user