Pierangelo Masarati wrote:
Please disregard the above patch, which is incorrect as well. I think the right way to address the problem of selecting the right context for configure statements definitely consists in attaching into the ConfigTable a Conf->bi pointer to the BackendInfo that ConfigTable entry belongs to. This would allow to determine if the ConfigTable entry belongs to the underlying database, to an overlay, to the frontend or whatever, by comparing the BackendInfo* with that of the above stuff.
Agreed. The actual pointer is not needed, just an enum to indicate which to use. I can work that up.
Something like:
if ( c->be ) { if ( !overlay_is_over( c->be ) ) { ptr = c->be->be_private; } else if (((slap_overinfo *)c->be->bd_info)->oi_orig == Conf->bi ) { ptr = c->be->be_private; } }
if ( ptr == NULL && c->bi && c->bi->bi_type == Conf->bi->bi_type ) { ptr = c->bi->bi_private; } else { // error }
or whatever.