/* init.c - initialize relay backend */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2004 The OpenLDAP Foundation.
+ * Copyright 2004-2006 The OpenLDAP Foundation.
* Portions Copyright 2004 Pierangelo Masarati.
* All rights reserved.
*
#include "portable.h"
#include <stdio.h>
+#include <ac/string.h>
#include "slap.h"
#include "back-relay.h"
bi->bi_op_modrdn = relay_back_op_modrdn;
bi->bi_op_add = relay_back_op_add;
bi->bi_op_delete = relay_back_op_delete;
-#if 0 /* causes a deadlock */
bi->bi_op_abandon = relay_back_op_abandon;
-#endif
bi->bi_op_cancel = relay_back_op_cancel;
bi->bi_extended = relay_back_op_extended;
bi->bi_entry_release_rw = relay_back_entry_release_rw;
if ( !BER_BVISNULL( &ri->ri_realsuffix ) ) {
ri->ri_bd = select_backend( &ri->ri_realsuffix, 0, 1 );
+
/* must be there: it was during config! */
- assert( ri->ri_bd );
+ assert( ri->ri_bd != NULL );
+
+ /* inherit controls */
+ AC_MEMCPY( be->be_ctrls, ri->ri_bd->be_ctrls, sizeof( be->be_ctrls ) );
- /* FIXME: (somehow) copy supported controls ? */
+ } else {
+ /* inherit all? */
+ AC_MEMCPY( be->be_ctrls, frontendDB->be_ctrls, sizeof( be->be_ctrls ) );
}
return 0;