]> git.sur5r.net Git - openldap/commitdiff
ITS#5025 from HEAD
authorHoward Chu <hyc@openldap.org>
Thu, 12 Jul 2007 01:41:11 +0000 (01:41 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 12 Jul 2007 01:41:11 +0000 (01:41 +0000)
servers/slapd/back-ldap/search.c

index 1ec5e13a182b8c861195bde4945dc0f3a4194f41..7dab755b8d14c51495513465f4df0d668644ec51 100644 (file)
@@ -330,12 +330,18 @@ retry:
                        e = ldap_first_entry( lc->lc_ld, res );
                        rc = ldap_build_entry( op, e, &ent, &bdn );
                        if ( rc == LDAP_SUCCESS ) {
+                               ldap_get_entry_controls( lc->lc_ld, res, &rs->sr_ctrls );
                                rs->sr_entry = &ent;
                                rs->sr_attrs = op->ors_attrs;
                                rs->sr_operational_attrs = NULL;
                                rs->sr_flags = 0;
                                rs->sr_err = LDAP_SUCCESS;
                                rc = rs->sr_err = send_search_entry( op, rs );
+                               if ( rs->sr_ctrls ) {
+                                       ldap_controls_free( rs->sr_ctrls );
+                                       rs->sr_ctrls = NULL;
+                               }
+                               rs->sr_entry = NULL;
                                if ( !BER_BVISNULL( &ent.e_name ) ) {
                                        assert( ent.e_name.bv_val != bdn.bv_val );
                                        op->o_tmpfree( ent.e_name.bv_val, op->o_tmpmemctx );
@@ -383,6 +389,7 @@ retry:
                                BER_BVZERO( &rs->sr_ref[ cnt ] );
 
                                /* ignore return value by now */
+                               rs->sr_entry = NULL;
                                ( void )send_search_reference( op, rs );
 
                        } else {