Diff for /servers/slapd/back-ldap/chain.c between versions 1.12.2.8 and 1.12.2.9

version 1.12.2.8, 2005/06/03 20:12:53 version 1.12.2.9, 2005/08/09 21:04:02
Line 1 Line 1
 /* chain.c - chain LDAP operations */  /* chain.c - chain LDAP operations */
 /* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/chain.c,v 1.12.2.7 2005/06/03 19:54:15 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/chain.c,v 1.31 2005/07/31 02:56:27 lukeh Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 2003-2005 The OpenLDAP Foundation.   * Copyright 2003-2005 The OpenLDAP Foundation.
Line 132  chaining_control_remove( Line 132  chaining_control_remove(
          * added by the chain overlay, so it's the only one we explicitly            * added by the chain overlay, so it's the only one we explicitly 
          * free */           * free */
         if ( op->o_ctrls != oldctrls ) {          if ( op->o_ctrls != oldctrls ) {
                 assert( op->o_ctrls );                  assert( op->o_ctrls != NULL );
                 assert( op->o_ctrls[ 0 ] );                  assert( op->o_ctrls[ 0 ] != NULL );
   
                 free( op->o_ctrls );                  free( op->o_ctrls );
   
Line 441  ldap_chain_response( Operation *op, Slap Line 441  ldap_chain_response( Operation *op, Slap
                 }                  }
                 break;                  break;
         case LDAP_REQ_ADD:          case LDAP_REQ_ADD:
                 {                  /* slap_mods2entry () should be called in do_add() */
                 int             cleanup_attrs = 0;                  assert( op->ora_e->e_attrs != NULL );
   
                 if ( op->ora_e->e_attrs == NULL ) {  
                         char            textbuf[ SLAP_TEXT_BUFLEN ];  
                         size_t          textlen = sizeof( textbuf );  
   
 #if 0  
                         /* FIXME: op->o_bd is still set to the BackendDB   
                          * structure of the database that tried to handle  
                          * the operation and actually returned a referral  
                          * ... */  
                         assert( SLAP_DBFLAGS( op->o_bd ) & SLAP_DBFLAG_GLOBAL_OVERLAY );  
 #endif  
   
                         /* global overlay: create entry */  
                         /* NOTE: this is a hack to use the chain overlay  
                          * as global.  I expect to be able to remove this  
                          * soon by using slap_mods2entry() earlier in  
                          * do_add(), adding the operational attrs later  
                          * if required. */  
                         rs->sr_err = slap_mods2entry( op->ora_modlist,  
                                         &op->ora_e, 0, 1,  
                                         &rs->sr_text, textbuf, textlen );  
                         if ( rs->sr_err != LDAP_SUCCESS ) {  
                                 send_ldap_result( op, rs );  
                                 rc = 1;  
                                 break;  
                         }  
                 }  
                 rc = ldap_chain_op( op, rs, lback->bi_op_add, ref );                  rc = ldap_chain_op( op, rs, lback->bi_op_add, ref );
                 if ( cleanup_attrs ) {  
                         attrs_free( op->ora_e->e_attrs );  
                         op->ora_e->e_attrs = NULL;  
                 }  
                 break;                  break;
                 }  
         case LDAP_REQ_DELETE:          case LDAP_REQ_DELETE:
                 rc = ldap_chain_op( op, rs, lback->bi_op_delete, ref );                  rc = ldap_chain_op( op, rs, lback->bi_op_delete, ref );
                 break;                  break;
Line 679  enum { Line 646  enum {
         PC_CHAINING = 1          PC_CHAINING = 1
 };  };
   
   #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
 static ConfigDriver chain_cf_gen;  static ConfigDriver chain_cf_gen;
 static ConfigLDAPadd chain_ldadd;  
 static ConfigCfAdd chain_cfadd;  static ConfigCfAdd chain_cfadd;
   #endif
   static ConfigLDAPadd chain_ldadd;
   
 static ConfigTable chaincfg[] = {  static ConfigTable chaincfg[] = {
 #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR  #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
Line 719  chain_ldadd( CfEntryInfo *p, Entry *e, C Line 688  chain_ldadd( CfEntryInfo *p, Entry *e, C
         return LDAP_SUCCESS;          return LDAP_SUCCESS;
 }  }
   
   #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
   
 static int  static int
 chain_cfadd( Operation *op, SlapReply *rs, Entry *p, ConfigArgs *ca )  chain_cfadd( Operation *op, SlapReply *rs, Entry *p, ConfigArgs *ca )
 {  {
Line 742  chain_cfadd( Operation *op, SlapReply *r Line 713  chain_cfadd( Operation *op, SlapReply *r
         return 0;          return 0;
 }  }
   
 #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR  
 static slap_verbmasks chaining_mode[] = {  static slap_verbmasks chaining_mode[] = {
         { BER_BVC("referralsRequired"),         LDAP_REFERRALS_REQUIRED },          { BER_BVC("referralsRequired"),         LDAP_REFERRALS_REQUIRED },
         { BER_BVC("referralsPreferred"),        LDAP_REFERRALS_PREFERRED },          { BER_BVC("referralsPreferred"),        LDAP_REFERRALS_PREFERRED },
Line 750  static slap_verbmasks chaining_mode[] = Line 720  static slap_verbmasks chaining_mode[] =
         { BER_BVC("chainingPreferred"),         LDAP_CHAINING_PREFERRED },          { BER_BVC("chainingPreferred"),         LDAP_CHAINING_PREFERRED },
         { BER_BVNULL,                           0 }          { BER_BVNULL,                           0 }
 };  };
 #endif  
   
 static int  static int
 chain_cf_gen( ConfigArgs *c )  chain_cf_gen( ConfigArgs *c )
 {  {
         slap_overinst   *on = (slap_overinst *)c->bi;          slap_overinst   *on = (slap_overinst *)c->bi;
   #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
         ldap_chain_t    *lc = (ldap_chain_t *)on->on_bi.bi_private;          ldap_chain_t    *lc = (ldap_chain_t *)on->on_bi.bi_private;
   #endif
   
         int             rc = 0;          int             rc = 0;
   
Line 935  chain_cf_gen( ConfigArgs *c ) Line 906  chain_cf_gen( ConfigArgs *c )
         return rc;          return rc;
 }  }
   
   #endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
   
 static int  static int
 ldap_chain_db_config(  ldap_chain_db_config(
         BackendDB       *be,          BackendDB       *be,

Removed from v.1.12.2.8  
changed lines
  Added in v.1.12.2.9


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