]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/search.c
Avoid shutdown problems
[openldap] / servers / slapd / search.c
index 828c1fc70c12d84281f4f3ea12f9701decacf927..be0b283f82df49cb037018088e047ecc8640dc45 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2007 The OpenLDAP Foundation.
+ * Copyright 1998-2009 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,8 +41,8 @@ do_search(
        struct berval base = BER_BVNULL;
        ber_len_t       siz, off, i;
 
-       Debug( LDAP_DEBUG_TRACE, "do_search\n", 0, 0, 0 );
-
+       Debug( LDAP_DEBUG_TRACE, "%s do_search\n",
+               op->o_log_prefix, 0, 0 );
        /*
         * Parse the search request.  It looks like this:
         *
@@ -112,8 +112,8 @@ do_search(
 
        rs->sr_err = dnPrettyNormal( NULL, &base, &op->o_req_dn, &op->o_req_ndn, op->o_tmpmemctx );
        if( rs->sr_err != LDAP_SUCCESS ) {
-               Debug( LDAP_DEBUG_ANY,
-                       "do_search: invalid dn (%s)\n", base.bv_val, 0, 0 );
+               Debug( LDAP_DEBUG_ANY, "%s do_search: invalid dn (%s)\n",
+                       op->o_log_prefix, base.bv_val, 0 );
                send_ldap_error( op, rs, LDAP_INVALID_DN_SYNTAX, "invalid DN" );
                goto return_results;
        }
@@ -163,8 +163,8 @@ do_search(
        }
 
        if( get_ctrls( op, rs, 1 ) != LDAP_SUCCESS ) {
-               Debug( LDAP_DEBUG_ANY, "do_search: get_ctrls failed\n", 0, 0, 0 );
-
+               Debug( LDAP_DEBUG_ANY, "%s do_search: get_ctrls failed\n",
+                       op->o_log_prefix, 0, 0 );
                goto return_results;
        }
 
@@ -180,7 +180,7 @@ do_search(
 
        if ( StatslogTest( LDAP_DEBUG_STATS ) ) {
                char abuf[BUFSIZ/2], *ptr = abuf;
-               int len = 0, alen;
+               unsigned len = 0, alen;
 
                sprintf(abuf, "scope=%d deref=%d", op->ors_scope, op->ors_deref);
                Statslog( LDAP_DEBUG_STATS,
@@ -227,7 +227,7 @@ return_results:;
                op->o_tmpfree( op->ors_filterstr.bv_val, op->o_tmpmemctx );
        }
        if ( op->ors_filter != NULL) {
-               filter_free_x( op, op->ors_filter );
+               filter_free_x( op, op->ors_filter, 1 );
        }
        if ( op->ors_attrs != NULL ) {
                op->o_tmpfree( op->ors_attrs, op->o_tmpmemctx );
@@ -241,8 +241,7 @@ fe_op_search( Operation *op, SlapReply *rs )
 {
        BackendDB               *bd = op->o_bd;
 
-       /* fake while loop to allow breaking out */
-       while ( op->ors_scope == LDAP_SCOPE_BASE ) {
+       if ( op->ors_scope == LDAP_SCOPE_BASE ) {
                Entry *entry = NULL;
 
                if ( BER_BVISEMPTY( &op->o_req_ndn ) ) {
@@ -299,7 +298,6 @@ fe_op_search( Operation *op, SlapReply *rs )
                        send_ldap_result( op, rs );
                        goto return_results;
                }
-               break;
        }
 
        if( BER_BVISEMPTY( &op->o_req_ndn ) && !BER_BVISEMPTY( &default_search_nbase ) ) {