mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
ITS#2836 add SLAPI_ADD_RESCONTROL support, fix SLAPI_RES_CONTROLS def
This commit is contained in:
parent
ff2c3ddce5
commit
32752fb396
@ -446,6 +446,8 @@ extern Backend * slapi_cl_get_be(char *dn);
|
||||
#define SLAPI_ENTRY_POST_OP 53
|
||||
|
||||
#define SLAPI_RESCONTROLS 55
|
||||
/* This is the spelling in the SunOne 5.2 docs */
|
||||
#define SLAPI_RES_CONTROLS SLAPI_RESCONTROLS
|
||||
#define SLAPI_ADD_RESCONTROL 56
|
||||
|
||||
#define SLAPI_ADD_TARGET SLAPI_TARGET_DN
|
||||
|
@ -278,6 +278,7 @@ set( Slapi_PBlock *pb, int param, void *val )
|
||||
{
|
||||
#if defined(LDAP_SLAPI)
|
||||
int i, freeit;
|
||||
int addcon = 0;
|
||||
|
||||
if ( isValidParam( pb, param ) == INVALID_PARAM ) {
|
||||
return PBLOCK_ERROR;
|
||||
@ -290,6 +291,11 @@ set( Slapi_PBlock *pb, int param, void *val )
|
||||
return PBLOCK_ERROR;
|
||||
}
|
||||
|
||||
if ( param == SLAPI_ADD_RESCONTROL ) {
|
||||
addcon = 1;
|
||||
param = SLAPI_RES_CONTROLS;
|
||||
}
|
||||
|
||||
switch ( param ) {
|
||||
case SLAPI_CONN_DN:
|
||||
case SLAPI_CONN_AUTHMETHOD:
|
||||
@ -311,8 +317,19 @@ set( Slapi_PBlock *pb, int param, void *val )
|
||||
pb->curParams[i] = param;
|
||||
pb->numParams++;
|
||||
}
|
||||
if ( freeit ) ch_free( pb->curVals[i] );
|
||||
pb->curVals[i] = val;
|
||||
if ( addcon ) {
|
||||
LDAPControl **ctrls = pb->curVals[i];
|
||||
int j;
|
||||
|
||||
for (j=0; ctrls[j]; j++);
|
||||
ctrls = ch_realloc( ctrls, (j+2)*sizeof(LDAPControl *) );
|
||||
ctrls[j] = val;
|
||||
ctrls[j+1] = NULL;
|
||||
pb->curVals[i] = ctrls;
|
||||
} else {
|
||||
if ( freeit ) ch_free( pb->curVals[i] );
|
||||
pb->curVals[i] = val;
|
||||
}
|
||||
|
||||
unLock( pb );
|
||||
return LDAP_SUCCESS;
|
||||
|
Loading…
Reference in New Issue
Block a user