/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2010 The OpenLDAP Foundation.
+ * Copyright 1998-2011 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
parseDomainScope, LDAP_SLIST_ENTRY_INITIALIZER(next) },
{ LDAP_CONTROL_DONTUSECOPY,
(int)offsetof(struct slap_control_ids, sc_dontUseCopy),
- SLAP_CTRL_GLOBAL|SLAP_CTRL_INTROGATE|SLAP_CTRL_HIDE,
+ SLAP_CTRL_GLOBAL|SLAP_CTRL_INTROGATE,
NULL, NULL,
parseDontUseCopy, LDAP_SLIST_ENTRY_INITIALIZER(next) },
{ LDAP_CONTROL_X_PERMISSIVE_MODIFY,
for ( i = 0; slap_known_controls[ i ]; i++ ) {
if ( strcmp( controloid, slap_known_controls[ i ] ) == 0 ) {
- while ( slap_known_controls[i] ) {
- slap_known_controls[i++] = slap_known_controls[i];
- }
+ do {
+ slap_known_controls[ i ] = slap_known_controls[ i+1 ];
+ } while ( slap_known_controls[ i++ ] );
num_known_controls--;
break;
}
return rc;
}
-int get_ctrls(
+int
+get_ctrls(
Operation *op,
SlapReply *rs,
int sendres )
+{
+ return get_ctrls2( op, rs, sendres, LDAP_TAG_CONTROLS );
+}
+
+int
+get_ctrls2(
+ Operation *op,
+ SlapReply *rs,
+ int sendres,
+ ber_tag_t ctag )
{
int nctrls = 0;
ber_tag_t tag;
return rs->sr_err;
}
- if(( tag = ber_peek_tag( ber, &len )) != LDAP_TAG_CONTROLS ) {
+ if(( tag = ber_peek_tag( ber, &len )) != ctag ) {
if( tag == LBER_ERROR ) {
rs->sr_err = SLAPD_DISCONNECT;
rs->sr_text = "unexpected data in PDU";