|
@@ -924,6 +924,7 @@ slapi_attr_assertion2keys_sub_sv_pb(
|
|
|
int rc;
|
|
int rc;
|
|
|
Slapi_PBlock pipb;
|
|
Slapi_PBlock pipb;
|
|
|
struct slapdplugin *pi = NULL;
|
|
struct slapdplugin *pi = NULL;
|
|
|
|
|
+ struct slapdplugin *origpi = NULL;
|
|
|
IFP a2k_fn = NULL;
|
|
IFP a2k_fn = NULL;
|
|
|
|
|
|
|
|
LDAPDebug( LDAP_DEBUG_FILTER,
|
|
LDAPDebug( LDAP_DEBUG_FILTER,
|
|
@@ -943,8 +944,11 @@ slapi_attr_assertion2keys_sub_sv_pb(
|
|
|
if (NULL == pb) {
|
|
if (NULL == pb) {
|
|
|
pblock_init( &pipb );
|
|
pblock_init( &pipb );
|
|
|
pb = &pipb;
|
|
pb = &pipb;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ /* back up the original slapdplugin if any */
|
|
|
|
|
+ slapi_pblock_get(pb, SLAPI_PLUGIN, &origpi);
|
|
|
}
|
|
}
|
|
|
- slapi_pblock_set( pb, SLAPI_PLUGIN, pi );
|
|
|
|
|
|
|
+ slapi_pblock_set(pb, SLAPI_PLUGIN, pi);
|
|
|
|
|
|
|
|
rc = -1; /* means no assertion2keys function */
|
|
rc = -1; /* means no assertion2keys function */
|
|
|
*ivals = NULL;
|
|
*ivals = NULL;
|
|
@@ -952,6 +956,11 @@ slapi_attr_assertion2keys_sub_sv_pb(
|
|
|
rc = (*a2k_fn)( pb, initial, any, final, ivals );
|
|
rc = (*a2k_fn)( pb, initial, any, final, ivals );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (pb != &pipb) {
|
|
|
|
|
+ /* restore the original slapdplugin if pb is not local. */
|
|
|
|
|
+ slapi_pblock_set(pb, SLAPI_PLUGIN, origpi);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
LDAPDebug( LDAP_DEBUG_FILTER,
|
|
LDAPDebug( LDAP_DEBUG_FILTER,
|
|
|
"<= slapi_attr_assertion2keys_sub_sv %d\n", rc, 0, 0 );
|
|
"<= slapi_attr_assertion2keys_sub_sv %d\n", rc, 0, 0 );
|
|
|
return( rc );
|
|
return( rc );
|