- for( ; *c != NULL; c++) {
- rc = send_ldap_control( ber, *c );
+ {
+ for( ; *c != NULL; c++) {
+ rc = send_ldap_control( ber, *c );
+ if( rc == -1 ) return rc;
+ }
+ }
+
+#ifdef LDAP_DEVEL
+ /* this is a hack to avoid having to modify op->s_ctrls */
+ if( o->o_sortedresults ) {
+ BerElementBuffer berbuf;
+ BerElement *sber = (BerElement *) &berbuf;
+ LDAPControl sorted;
+ BER_BVZERO( &sorted.ldctl_value );
+ sorted.ldctl_oid = LDAP_CONTROL_SORTRESPONSE;
+ sorted.ldctl_iscritical = 0;
+
+ ber_init2( sber, NULL, LBER_USE_DER );
+
+ ber_printf( sber, "{i}", LDAP_UNWILLING_TO_PERFORM );
+
+ if( ber_flatten2( ber, &sorted.ldctl_value, 0 ) == -1 ) {
+ return LBER_ERROR;
+ }
+
+ (void) ber_free_buf( ber );
+
+ rc = send_ldap_control( ber, &sorted );