dynlist_info_t *dy_dli;
dynlist_map_t *dy_dlm;
AttributeDescription *dy_staticmember;
+ Filter *dy_filter;
+ int dy_filter_reused;
int dy_seen;
int dy_numuris;
TAvlnode *dy_subs;
Attribute *a;
int rc = -1;
- if ( ldap_tavl_insert( &ds->ds_fnodes, dyn, dynlist_ptr_cmp, ldap_avl_dup_error ))
+ if ( ldap_tavl_insert( &ds->ds_fnodes, dyn, dynlist_ptr_cmp, ldap_avl_dup_error )) {
+ if ( !dyn->dy_filter_reused ) {
+ Filter *nf = op->o_tmpalloc( sizeof(Filter), op->o_tmpmemctx );
+ nf->f_choice = dyn->dy_filter->f_choice;
+ nf->f_list = dyn->dy_filter->f_list;
+ nf->f_next = NULL;
+ dyn->dy_filter->f_choice = LDAP_FILTER_OR;
+ dyn->dy_filter->f_list = nf;
+ dyn->dy_filter_reused = 1;
+ }
+ n->f_choice = LDAP_FILTER_OR | SLAPD_FILTER_REUSED;
+ n->f_list = dyn->dy_filter->f_list;
return 0;
+ }
+ dyn->dy_filter = n;
if ( overlay_entry_get_ov( op, &dyn->dy_nname, NULL, NULL, 0, &e, on ) !=
LDAP_SUCCESS || e == NULL ) {