Skip to content
Snippets Groups Projects
Commit 32752fb3 authored by Howard Chu's avatar Howard Chu
Browse files

ITS#2836 add SLAPI_ADD_RESCONTROL support, fix SLAPI_RES_CONTROLS def

parent ff2c3ddc
Branches
Tags
No related merge requests found
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment