Diff for /servers/slapd/back-ldap/modrdn.c between versions 1.28.2.7 and 1.29

version 1.28.2.7, 2005/01/20 17:01:12 version 1.29, 2003/11/27 05:35:14
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.28.2.6 2004/12/25 12:24:39 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/modrdn.c,v 1.28 2003/04/07 14:52:59 ando 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-2005 The OpenLDAP Foundation.   * Copyright 2003 The OpenLDAP Foundation.
  * Portions Copyright 1999-2003 Howard Chu.  
  * Portions Copyright 2000-2003 Pierangelo Masarati.  
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
Line 20 Line 18
  * in OpenLDAP Software and subsequently enhanced by Pierangelo   * in OpenLDAP Software and subsequently enhanced by Pierangelo
  * Masarati.   * Masarati.
  */   */
   /* This is an altered version */
   /*
    * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
    * 
    * Permission is granted to anyone to use this software for any purpose
    * on any computer system, and to alter it and redistribute it, subject
    * to the following restrictions:
    * 
    * 1. The author is not responsible for the consequences of use of this
    *    software, no matter how awful, even if they arise from flaws in it.
    * 
    * 2. The origin of this software must not be misrepresented, either by
    *    explicit claim or by omission.  Since few users ever read sources,
    *    credits should appear in the documentation.
    * 
    * 3. Altered versions must be plainly marked as such, and must not be
    *    misrepresented as being the original software.  Since few users
    *    ever read sources, credits should appear in the documentation.
    * 
    * 4. This notice may not be removed or altered.
    *
    *
    *
    * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
    * 
    * This software is being modified by Pierangelo Masarati.
    * The previously reported conditions apply to the modified code as well.
    * Changes in the original code are highlighted where required.
    * Credits for the original code go to the author, Howard Chu.
    */
   
 #include "portable.h"  #include "portable.h"
   
Line 40  ldap_back_modrdn( Line 68  ldap_back_modrdn(
         struct ldapconn *lc;          struct ldapconn *lc;
         ber_int_t msgid;          ber_int_t msgid;
         dncookie dc;          dncookie dc;
         int do_retry = 1;  
         int rc = LDAP_SUCCESS;  
 #ifdef LDAP_BACK_PROXY_AUTHZ   
         LDAPControl **ctrls = NULL;  
 #endif /* LDAP_BACK_PROXY_AUTHZ */  
   
         struct berval mdn = BER_BVNULL, mnewSuperior = BER_BVNULL;          struct berval mdn = { 0, NULL }, mnewSuperior = { 0, NULL };
   
         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) ) {
Line 69  ldap_back_modrdn( Line 92  ldap_back_modrdn(
                  * Rewrite the new superior, if defined and required                   * Rewrite the new superior, if defined and required
                  */                   */
 #ifdef ENABLE_REWRITE  #ifdef ENABLE_REWRITE
                 dc.ctx = "newSuperiorDN";                  dc.ctx = "newSuperiorDn";
 #endif  #endif
                 if ( ldap_back_dn_massage( &dc, op->orr_newSup,                  if ( ldap_back_dn_massage( &dc, op->orr_newSup,
                         &mnewSuperior ) ) {                          &mnewSuperior ) ) {
Line 82  ldap_back_modrdn( Line 105  ldap_back_modrdn(
          * Rewrite the modrdn dn, if required           * Rewrite the modrdn dn, if required
          */           */
 #ifdef ENABLE_REWRITE  #ifdef ENABLE_REWRITE
         dc.ctx = "modrDN";          dc.ctx = "modrDn";
 #endif  #endif
         if ( ldap_back_dn_massage( &dc, &op->o_req_ndn, &mdn ) ) {          if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
                 send_ldap_result( op, rs );                  send_ldap_result( op, rs );
                 return -1;                  return -1;
         }          }
   
 #ifdef LDAP_BACK_PROXY_AUTHZ  
         rc = ldap_back_proxy_authz_ctrl( lc, op, rs, &ctrls );  
         if ( rc != LDAP_SUCCESS ) {  
                 send_ldap_result( op, rs );  
                 rc = -1;  
                 goto cleanup;  
         }  
 #endif /* LDAP_BACK_PROXY_AUTHZ */  
   
 retry:  
         rs->sr_err = ldap_rename( lc->ld, mdn.bv_val,          rs->sr_err = ldap_rename( lc->ld, mdn.bv_val,
                         op->orr_newrdn.bv_val, mnewSuperior.bv_val,                          op->orr_newrdn.bv_val, mnewSuperior.bv_val,
                         op->orr_deleteoldrdn,                          op->orr_deleteoldrdn, op->o_ctrls,
 #ifdef LDAP_BACK_PROXY_AUTHZ  
                         ctrls,  
 #else /* ! LDAP_BACK_PROXY_AUTHZ */  
                         op->o_ctrls,  
 #endif /* ! LDAP_BACK_PROXY_AUTHZ */  
                         NULL, &msgid );                          NULL, &msgid );
         rc = ldap_back_op_result( lc, op, rs, msgid, 1 );  
         if ( rs->sr_err == LDAP_SERVER_DOWN && do_retry ) {  
                 do_retry = 0;  
                 if ( ldap_back_retry (lc, op, rs )) goto retry;  
         }  
   
 #ifdef LDAP_BACK_PROXY_AUTHZ          if ( mdn.bv_val != op->o_req_dn.bv_val ) {
 cleanup:  
         if ( ctrls && ctrls != op->o_ctrls ) {  
                 free( ctrls[ 0 ] );  
                 free( ctrls );  
         }  
 #endif /* LDAP_BACK_PROXY_AUTHZ */  
   
         if ( mdn.bv_val != op->o_req_ndn.bv_val ) {  
                 free( mdn.bv_val );                  free( mdn.bv_val );
         }          }
         if ( mnewSuperior.bv_val != NULL          if ( mnewSuperior.bv_val != NULL
                 && mnewSuperior.bv_val != op->oq_modrdn.rs_newSup->bv_val ) {                  && mnewSuperior.bv_val != op->oq_modrdn.rs_newSup->bv_val ) {
                 free( mnewSuperior.bv_val );                  free( mnewSuperior.bv_val );
         }          }
           
         return rc;          return( ldap_back_op_result( lc, op, rs, msgid, 1 ) );
 }  }
   

Removed from v.1.28.2.7  
changed lines
  Added in v.1.29


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