]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/rwm.c
trim listed modules
[openldap] / servers / slapd / overlays / rwm.c
index 9a59a1707e8f766f9ffe29ee06993b8b3eb208c3..4e87d36dd2b05098e299f092f6df37b6f482f5ab 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2006 The OpenLDAP Foundation.
+ * Copyright 2003-2007 The OpenLDAP Foundation.
  * Portions Copyright 2003 Pierangelo Masarati.
  * All rights reserved.
  *
@@ -27,6 +27,7 @@
 #include "rwm.h"
 
 typedef struct rwm_op_state {
+       ber_tag_t r_tag;
        struct berval ro_dn;
        struct berval ro_ndn;
        struct berval r_dn;
@@ -48,8 +49,8 @@ rwm_op_cleanup( Operation *op, SlapReply *rs )
        slap_callback   *cb = op->o_callback;
        rwm_op_state *ros = cb->sc_private;
 
-       if ( rs->sr_type == REP_RESULT || op->o_abandon ||
-               rs->sr_err == SLAPD_ABANDON ) {
+       if ( rs->sr_type == REP_RESULT || rs->sr_type == REP_EXTENDED ||
+               op->o_abandon || rs->sr_err == SLAPD_ABANDON ) {
 
                op->o_req_dn = ros->ro_dn;
                op->o_req_ndn = ros->ro_ndn;
@@ -57,7 +58,7 @@ rwm_op_cleanup( Operation *op, SlapReply *rs )
                if ( !BER_BVISEMPTY( &ros->r_dn )) ch_free( ros->r_dn.bv_val );
                if ( !BER_BVISEMPTY( &ros->r_ndn )) ch_free( ros->r_ndn.bv_val );
 
-               switch( op->o_tag ) {
+               switch( ros->r_tag ) {
                case LDAP_REQ_COMPARE:
                        if ( op->orc_ava->aa_value.bv_val != ros->orc_ava->aa_value.bv_val )
                                op->o_tmpfree( op->orc_ava->aa_value.bv_val, op->o_tmpmemctx );
@@ -110,6 +111,7 @@ rwm_callback_get( Operation *op, SlapReply *rs )
        roc->cb.sc_response = NULL;
        roc->cb.sc_next = op->o_callback;
        roc->cb.sc_private = &roc->ros;
+       roc->ros.r_tag = op->o_tag;
        roc->ros.ro_dn = op->o_req_dn;
        roc->ros.ro_ndn = op->o_req_ndn;
        roc->ros.o_request = op->o_request;
@@ -1641,7 +1643,6 @@ rwm_db_init(
        BackendDB       *be )
 {
        slap_overinst           *on = (slap_overinst *) be->bd_info;
-       struct ldapmapping      *mapping = NULL;
        struct ldaprwmap        *rwmap;
 #ifdef ENABLE_REWRITE
        char                    *rargv[ 3 ];
@@ -1670,13 +1671,6 @@ rwm_db_init(
        rewrite_parse( rwmap->rwm_rw, "<suffix massage>", 2, 2, rargv );
 #endif /* ENABLE_REWRITE */
 
-       if ( rwm_map_init( &rwmap->rwm_oc, &mapping ) != LDAP_SUCCESS ||
-                       rwm_map_init( &rwmap->rwm_at, &mapping ) != LDAP_SUCCESS )
-       {
-               rc = 1;
-               goto error_return;
-       }
-
 error_return:;
        on->on_bi.bi_private = (void *)rwmap;