Diff for /servers/slapd/back-ldap/modrdn.c between versions 1.37 and 1.38

version 1.37, 2004/10/01 09:16:38 version 1.38, 2004/11/13 13:43:30
Line 1 Line 1
 /* modrdn.c - ldap backend modrdn function */  /* modrdn.c - ldap backend modrdn function */
 /* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/modrdn.c,v 1.36 2004/05/13 18:25:53 ando Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/modrdn.c,v 1.37 2004/10/01 09:16:38 hyc Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 1999-2004 The OpenLDAP Foundation.   * Copyright 1999-2004 The OpenLDAP Foundation.
Line 33 Line 33
   
 int  int
 ldap_back_modrdn(  ldap_back_modrdn(
     Operation   *op,                  Operation       *op,
     SlapReply   *rs )                  SlapReply       *rs )
 {  {
         struct ldapinfo *li = (struct ldapinfo *) op->o_bd->be_private;  
         struct ldapconn *lc;          struct ldapconn *lc;
         ber_int_t msgid;          ber_int_t       msgid;
         dncookie dc;          LDAPControl     **ctrls = NULL;
         LDAPControl **ctrls = NULL;          int             do_retry = 1;
         int do_retry = 1;          int             rc = LDAP_SUCCESS;
         int rc = LDAP_SUCCESS;          char            *newSup = NULL;
   
         struct berval mdn = BER_BVNULL, mnewSuperior = BER_BVNULL;  
   
         lc = ldap_back_getconn( op, rs );          lc = ldap_back_getconn( op, rs );
         if ( !lc || !ldap_back_dobind(lc, op, rs) ) {          if ( !lc || !ldap_back_dobind( lc, op, rs ) ) {
                 return( -1 );                  return( -1 );
         }          }
   
         dc.rwmap = &li->rwmap;          if ( op->orr_newSup ) {
 #ifdef ENABLE_REWRITE                  int     version = LDAP_VERSION3;
         dc.conn = op->o_conn;  
         dc.rs = rs;  
 #else  
         dc.tofrom = 1;  
         dc.normalized = 0;  
 #endif  
         if (op->orr_newSup) {  
                 int version = LDAP_VERSION3;  
                 ldap_set_option( lc->ld, LDAP_OPT_PROTOCOL_VERSION, &version);  
                                   
                 /*                  ldap_set_option( lc->lc_ld, LDAP_OPT_PROTOCOL_VERSION, &version );
                  * Rewrite the new superior, if defined and required                  newSup = op->orr_newSup->bv_val;
                  */  
 #ifdef ENABLE_REWRITE  
                 dc.ctx = "newSuperiorDN";  
 #endif  
                 if ( ldap_back_dn_massage( &dc, op->orr_newSup,  
                         &mnewSuperior ) ) {  
                         send_ldap_result( op, rs );  
                         return -1;  
                 }  
         }  
   
         /*  
          * Rewrite the modrdn dn, if required  
          */  
 #ifdef ENABLE_REWRITE  
         dc.ctx = "modrDN";  
 #endif  
         if ( ldap_back_dn_massage( &dc, &op->o_req_ndn, &mdn ) ) {  
                 send_ldap_result( op, rs );  
                 return -1;  
         }          }
   
         ctrls = op->o_ctrls;          ctrls = op->o_ctrls;
Line 98  ldap_back_modrdn( Line 66  ldap_back_modrdn(
 #endif /* LDAP_BACK_PROXY_AUTHZ */  #endif /* LDAP_BACK_PROXY_AUTHZ */
   
 retry:  retry:
         rs->sr_err = ldap_rename( lc->ld, mdn.bv_val,          rs->sr_err = ldap_rename( lc->lc_ld, op->o_req_ndn.bv_val,
                         op->orr_newrdn.bv_val, mnewSuperior.bv_val,                          op->orr_newrdn.bv_val, newSup,
                         op->orr_deleteoldrdn,                          op->orr_deleteoldrdn, ctrls, NULL, &msgid );
                         ctrls,  
                         NULL, &msgid );  
         rc = ldap_back_op_result( lc, op, rs, msgid, 1 );          rc = ldap_back_op_result( lc, op, rs, msgid, 1 );
         if ( rs->sr_err == LDAP_SERVER_DOWN && do_retry ) {          if ( rs->sr_err == LDAP_SERVER_DOWN && do_retry ) {
                 do_retry = 0;                  do_retry = 0;
                 if ( ldap_back_retry (lc, op, rs )) goto retry;                  if ( ldap_back_retry( lc, op, rs ) ) {
                           goto retry;
                   }
         }          }
   
 #ifdef LDAP_BACK_PROXY_AUTHZ  
 cleanup:  cleanup:
         if ( ctrls && ctrls != op->o_ctrls ) {  #ifdef LDAP_BACK_PROXY_AUTHZ
                 free( ctrls[ 0 ] );          (void)ldap_back_proxy_authz_ctrl_free( op, &ctrls );
                 free( ctrls );  
         }  
 #endif /* LDAP_BACK_PROXY_AUTHZ */  #endif /* LDAP_BACK_PROXY_AUTHZ */
   
         if ( mdn.bv_val != op->o_req_ndn.bv_val ) {  
                 free( mdn.bv_val );  
         }  
         if ( mnewSuperior.bv_val != NULL  
                 && mnewSuperior.bv_val != op->oq_modrdn.rs_newSup->bv_val ) {  
                 free( mnewSuperior.bv_val );  
         }  
   
         return rc;          return rc;
 }  }
   

Removed from v.1.37  
changed lines
  Added in v.1.38


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org