Diff for /servers/slapd/back-ldap/modrdn.c between versions 1.20 and 1.21

version 1.20, 2003/02/18 23:01:22 version 1.21, 2003/03/30 07:03:55
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.19 2003/02/16 08:22:45 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/modrdn.c,v 1.20 2003/02/18 23:01:22 hyc Exp $ */
 /*  /*
  * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.   * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file   * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
Line 47 Line 47
   
 int  int
 ldap_back_modrdn(  ldap_back_modrdn(
     Backend     *be,  
     Connection  *conn,  
     Operation   *op,      Operation   *op,
     struct berval       *dn,      SlapReply   *rs )
     struct berval       *ndn,  
     struct berval       *newrdn,  
     struct berval       *nnewrdn,  
     int         deleteoldrdn,  
     struct berval       *newSuperior,  
     struct berval       *nnewSuperior  
 )  
 {  {
         struct ldapinfo *li = (struct ldapinfo *) be->be_private;          struct ldapinfo *li = (struct ldapinfo *) op->o_bd->be_private;
         struct ldapconn *lc;          struct ldapconn *lc;
         int rc;          int rc;
         ber_int_t msgid;          ber_int_t msgid;
   
         struct berval mdn = { 0, NULL }, mnewSuperior = { 0, NULL };          struct berval mdn = { 0, NULL }, mnewSuperior = { 0, NULL };
   
         lc = ldap_back_getconn( li, conn, op );          lc = ldap_back_getconn( li, op, rs );
         if ( !lc || !ldap_back_dobind(li, lc, conn, op) ) {          if ( !lc || !ldap_back_dobind(li, lc, op, rs) ) {
                 return( -1 );                  return( -1 );
         }          }
   
         if (newSuperior) {          if (op->oq_modrdn.rs_newSup) {
                 int version = LDAP_VERSION3;                  int version = LDAP_VERSION3;
                 ldap_set_option( lc->ld, LDAP_OPT_PROTOCOL_VERSION, &version);                  ldap_set_option( lc->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
                                   
Line 80  ldap_back_modrdn( Line 71  ldap_back_modrdn(
                  */                   */
 #ifdef ENABLE_REWRITE  #ifdef ENABLE_REWRITE
                 switch ( rewrite_session( li->rwinfo, "newSuperiorDn",                  switch ( rewrite_session( li->rwinfo, "newSuperiorDn",
                                         newSuperior->bv_val, conn, &mnewSuperior.bv_val ) ) {                                          op->oq_modrdn.rs_newSup->bv_val, op->o_conn, &mnewSuperior.bv_val ) ) {
                 case REWRITE_REGEXEC_OK:                  case REWRITE_REGEXEC_OK:
                         if ( mnewSuperior.bv_val == NULL ) {                          if ( mnewSuperior.bv_val == NULL ) {
                                 mnewSuperior.bv_val = ( char * )newSuperior;                                  mnewSuperior.bv_val = ( char * )op->oq_modrdn.rs_newSup->bv_val;
                         }                          }
 #ifdef NEW_LOGGING  #ifdef NEW_LOGGING
                         LDAP_LOG( BACK_LDAP, DETAIL1,                           LDAP_LOG( BACK_LDAP, DETAIL1, 
                                 "[rw] newSuperiorDn:" " \"%s\" -> \"%s\"\n",                                  "[rw] newSuperiorDn:" " \"%s\" -> \"%s\"\n",
                                 newSuperior, mnewSuperior.bv_val, 0 );                                  op->oq_modrdn.rs_newSup->bv_val, mnewSuperior.bv_val, 0 );
 #else /* !NEW_LOGGING */  #else /* !NEW_LOGGING */
                         Debug( LDAP_DEBUG_ARGS, "rw> newSuperiorDn:"                          Debug( LDAP_DEBUG_ARGS, "rw> newSuperiorDn:"
                                         " \"%s\" -> \"%s\"\n%s",                                          " \"%s\" -> \"%s\"\n%s",
                                         newSuperior->bv_val, mnewSuperior.bv_val, "" );                                          op->oq_modrdn.rs_newSup->bv_val, mnewSuperior.bv_val, "" );
 #endif /* !NEW_LOGGING */  #endif /* !NEW_LOGGING */
                         break;                          break;
   
                 case REWRITE_REGEXEC_UNWILLING:                  case REWRITE_REGEXEC_UNWILLING:
                         send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,                          send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                         NULL, "Operation not allowed",                                          "Operation not allowed" );
                                         NULL, NULL );  
                         return( -1 );                          return( -1 );
   
                 case REWRITE_REGEXEC_ERR:                  case REWRITE_REGEXEC_ERR:
                         send_ldap_result( conn, op, LDAP_OTHER,                          send_ldap_error( op, rs, LDAP_OTHER,
                                         NULL, "Rewrite error",                                          "Rewrite error" );
                                         NULL, NULL );  
                         return( -1 );                          return( -1 );
                 }                  }
 #else /* !ENABLE_REWRITE */  #else /* !ENABLE_REWRITE */
                 ldap_back_dn_massage( li, newSuperior, &mnewSuperior, 0, 1 );                  ldap_back_dn_massage( li, op->oq_modrdn.rs_newSup, &mnewSuperior, 0, 1 );
                 if ( mnewSuperior.bv_val == NULL ) {                  if ( mnewSuperior.bv_val == NULL ) {
                         return( -1 );                          return( -1 );
                 }                  }
Line 120  ldap_back_modrdn( Line 109  ldap_back_modrdn(
         /*          /*
          * Rewrite the modrdn dn, if required           * Rewrite the modrdn dn, if required
          */           */
         switch ( rewrite_session( li->rwinfo, "modrDn", dn->bv_val, conn, &mdn.bv_val ) ) {          switch ( rewrite_session( li->rwinfo, "modrDn", op->o_req_dn.bv_val, op->o_conn, &mdn.bv_val ) ) {
         case REWRITE_REGEXEC_OK:          case REWRITE_REGEXEC_OK:
                 if ( mdn.bv_val == NULL ) {                  if ( mdn.bv_val == NULL ) {
                         mdn.bv_val = ( char * )dn->bv_val;                          mdn.bv_val = ( char * )op->o_req_dn.bv_val;
                 }                  }
 #ifdef NEW_LOGGING  #ifdef NEW_LOGGING
                 LDAP_LOG( BACK_LDAP, DETAIL1,                   LDAP_LOG( BACK_LDAP, DETAIL1, 
                         "[rw] modrDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 );                          "[rw] modrDn: \"%s\" -> \"%s\"\n", op->o_req_dn.bv_val, mdn.bv_val, 0 );
 #else /* !NEW_LOGGING */  #else /* !NEW_LOGGING */
                 Debug( LDAP_DEBUG_ARGS, "rw> modrDn: \"%s\" -> \"%s\"\n%s",                  Debug( LDAP_DEBUG_ARGS, "rw> modrDn: \"%s\" -> \"%s\"\n%s",
                                 dn->bv_val, mdn.bv_val, "" );                                  op->o_req_dn.bv_val, mdn.bv_val, "" );
 #endif /* !NEW_LOGGING */  #endif /* !NEW_LOGGING */
                 break;                  break;
                                   
         case REWRITE_REGEXEC_UNWILLING:          case REWRITE_REGEXEC_UNWILLING:
                 send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 NULL, "Operation not allowed", NULL, NULL );                                  "Operation not allowed" );
                 return( -1 );                  return( -1 );
   
         case REWRITE_REGEXEC_ERR:          case REWRITE_REGEXEC_ERR:
                 send_ldap_result( conn, op, LDAP_OTHER,                  send_ldap_error( op, rs, LDAP_OTHER,
                                 NULL, "Rewrite error", NULL, NULL );                                  "Rewrite error" );
                 return( -1 );                  return( -1 );
         }          }
 #else /* !ENABLE_REWRITE */  #else /* !ENABLE_REWRITE */
         ldap_back_dn_massage( li, dn, &mdn, 0, 1 );          ldap_back_dn_massage( li, &op->o_req_dn, &mdn, 0, 1 );
 #endif /* !ENABLE_REWRITE */  #endif /* !ENABLE_REWRITE */
   
         rc = ldap_rename( lc->ld, mdn.bv_val, newrdn->bv_val, mnewSuperior.bv_val,          rc = ldap_rename( lc->ld, mdn.bv_val, op->oq_modrdn.rs_newrdn.bv_val, mnewSuperior.bv_val,
                 deleteoldrdn, op->o_ctrls, NULL, &msgid );                  op->oq_modrdn.rs_deleteoldrdn, op->o_ctrls, NULL, &msgid );
   
         if ( mdn.bv_val != dn->bv_val ) {          if ( mdn.bv_val != op->o_req_dn.bv_val ) {
                 free( mdn.bv_val );                  free( mdn.bv_val );
         }          }
         if ( mnewSuperior.bv_val != NULL          if ( mnewSuperior.bv_val != NULL
                 && mnewSuperior.bv_val != newSuperior->bv_val ) {                  && mnewSuperior.bv_val != op->oq_modrdn.rs_newSup->bv_val ) {
                 free( mnewSuperior.bv_val );                  free( mnewSuperior.bv_val );
         }          }
                   
         return( ldap_back_op_result( li, lc, conn, op, msgid, rc, 1 ) );          return( ldap_back_op_result( li, lc, op, rs, msgid, rc, 1 ) );
 }  }

Removed from v.1.20  
changed lines
  Added in v.1.21


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