Diff for /servers/slapd/overlays/retcode.c between versions 1.4.2.5 and 1.4.2.6

version 1.4.2.5, 2006/01/03 22:16:25 version 1.4.2.6, 2006/04/04 22:34:43
Line 1 Line 1
 /* retcode.c - customizable response for client testing purposes */  /* retcode.c - customizable response for client testing purposes */
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/retcode.c,v 1.4.2.4 2005/11/26 23:54:52 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/retcode.c,v 1.4.2.5 2006/01/03 22:16:25 kurt Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 2005-2006 The OpenLDAP Foundation.   * Copyright 2005-2006 The OpenLDAP Foundation.
Line 77  typedef struct retcode_t { Line 77  typedef struct retcode_t {
         struct berval           rd_pdn;          struct berval           rd_pdn;
         struct berval           rd_npdn;          struct berval           rd_npdn;
   
           int                     rd_sleep;
   
         retcode_item_t          *rd_item;          retcode_item_t          *rd_item;
   
         unsigned                rd_flags;          unsigned                rd_flags;
Line 202  retcode_op_internal( Operation *op, Slap Line 204  retcode_op_internal( Operation *op, Slap
         slap_overinst   *on = (slap_overinst *)op->o_bd->bd_info;          slap_overinst   *on = (slap_overinst *)op->o_bd->bd_info;
   
         Operation       op2 = *op;          Operation       op2 = *op;
         SlapReply       rs2 = { 0 };  
         BackendDB       db = *op->o_bd;          BackendDB       db = *op->o_bd;
         slap_callback   sc = { 0 };          slap_callback   sc = { 0 };
         retcode_cb_t    rdc;          retcode_cb_t    rdc;
Line 236  retcode_op_internal( Operation *op, Slap Line 237  retcode_op_internal( Operation *op, Slap
         sc.sc_private = &rdc;          sc.sc_private = &rdc;
         op2.o_callback = &sc;          op2.o_callback = &sc;
   
         rc = op2.o_bd->be_search( &op2, &rs2 );          rc = op2.o_bd->be_search( &op2, rs );
           op->o_abandon = op2.o_abandon;
   
         filter_free_x( &op2, op2.ors_filter );          filter_free_x( &op2, op2.ors_filter );
         ber_memfree_x( op2.ors_filterstr.bv_val, op2.o_tmpmemctx );          ber_memfree_x( op2.ors_filterstr.bv_val, op2.o_tmpmemctx );
Line 259  retcode_op_func( Operation *op, SlapRepl Line 261  retcode_op_func( Operation *op, SlapRepl
   
         slap_callback           *cb = NULL;          slap_callback           *cb = NULL;
   
           /* sleep as required */
           if ( rd->rd_sleep < 0 ) {
                   sleep( rand() % ( - rd->rd_sleep ) );
   
           } else if ( rd->rd_sleep > 0 ) {
                   sleep( rd->rd_sleep );
           }
   
         if ( !dnIsSuffix( &op->o_req_ndn, &rd->rd_npdn ) ) {          if ( !dnIsSuffix( &op->o_req_ndn, &rd->rd_npdn ) ) {
                 if ( RETCODE_INDIR( rd ) ) {                  if ( RETCODE_INDIR( rd ) ) {
                         switch ( op->o_tag ) {                          switch ( op->o_tag ) {
Line 275  retcode_op_func( Operation *op, SlapRepl Line 285  retcode_op_func( Operation *op, SlapRepl
                         case LDAP_REQ_SEARCH:                          case LDAP_REQ_SEARCH:
                                 if ( op->ors_scope == LDAP_SCOPE_BASE ) {                                  if ( op->ors_scope == LDAP_SCOPE_BASE ) {
                                         rs->sr_err = retcode_op_internal( op, rs );                                          rs->sr_err = retcode_op_internal( op, rs );
                                         if ( rs->sr_err == SLAP_CB_CONTINUE ) {                                          switch ( rs->sr_err ) {
                                           case SLAP_CB_CONTINUE:
                                                   if ( rs->sr_nentries == 0 ) {
                                                           break;
                                                   }
                                                 rs->sr_err = LDAP_SUCCESS;                                                  rs->sr_err = LDAP_SUCCESS;
                                                   /* fallthru */
   
                                           default:
                                                   send_ldap_result( op, rs );
                                                   break;
                                         }                                          }
                                         send_ldap_result( op, rs );  
                                         return rs->sr_err;                                          return rs->sr_err;
                                 }                                  }
                                 break;                                  break;
Line 874  retcode_db_config( Line 892  retcode_db_config(
         } else if ( strcasecmp( argv0, "indir" ) == 0 ) {          } else if ( strcasecmp( argv0, "indir" ) == 0 ) {
                 rd->rd_flags |= RETCODE_FINDIR;                  rd->rd_flags |= RETCODE_FINDIR;
   
           } else if ( strcasecmp( argv0, "sleep" ) == 0 ) {
                   switch ( argc ) {
                   case 1:
                           fprintf( stderr, "%s: line %d: retcode: "
                                   "\"retcode-sleep <time>\": missing <time>\n",
                                   fname, lineno );
                           return 1;
   
                   case 2:
                           break;
   
                   default:
                           fprintf( stderr, "%s: line %d: retcode: "
                                   "\"retcode-sleep <time>\": extra cruft after <time>\n",
                                   fname, lineno );
                           return 1;
                   }
   
                   if ( lutil_atoi( &rd->rd_sleep, argv[ 1 ] ) != 0 ) {
                           fprintf( stderr, "%s: line %d: retcode: "
                                   "\"retcode-sleep <time>\": unable to parse <time>\n",
                                   fname, lineno );
                           return 1;
                   }
   
         } else {          } else {
                 return SLAP_CONF_UNKNOWN;                  return SLAP_CONF_UNKNOWN;
         }          }

Removed from v.1.4.2.5  
changed lines
  Added in v.1.4.2.6


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