sc2 = { 0 };
int rc = 0;
int cache = op->o_do_not_cache;
+ char *matched;
BerVarray ref;
struct berval ndn = op->o_ndn;
* e) what ssf
*/
+ matched = rs->sr_matched;
+ rs->sr_matched = NULL;
ref = rs->sr_ref;
rs->sr_ref = NULL;
op->o_bd->be_private = private;
op->o_callback = sc;
op->o_ndn = ndn;
+ rs->sr_matched = matched;
rs->sr_ref = ref;
ldap_pvt_thread_mutex_unlock( &lc->lc_mutex );
int freetext = 0;
int do_retry = 1;
LDAPControl **ctrls = NULL;
+ char *save_matched = rs->sr_matched;
lc = ldap_back_getconn( op, rs, LDAP_BACK_SENDERR );
if ( !lc || !ldap_back_dobind( lc, op, rs, LDAP_BACK_SENDERR ) ) {
rs->sr_ctrls = NULL;
}
- if ( rs->sr_matched != NULL ) {
+ if ( rs->sr_matched != NULL && rs->sr_matched != save_matched ) {
if ( rs->sr_matched != match.bv_val ) {
ber_memfree_x( (char *)rs->sr_matched, op->o_tmpmemctx );
} else {
LDAP_FREE( match.bv_val );
}
- rs->sr_matched = NULL;
+ rs->sr_matched = save_matched;
}
if ( !BER_BVISNULL( &filter ) && filter.bv_val != op->ors_filterstr.bv_val ) {
exit 0
fi
+rm -rf $TESTDIR
+
mkdir -p $TESTDIR $DBDIR1 $DBDIR2
echo "Running slapadd to build slapd database..."
echo PID $PID1
read foo
fi
+KILLPIDS="$PID1"
echo "Starting second slapd on TCP/IP port $PORT2..."
. $CONFFILTER $BACKEND $MONITORDB < $CHAINCONF2 > $CONF2
read foo
fi
-KILLPIDS="$PID1 $PID2"
+KILLPIDS="$KILLPIDS $PID2"
sleep 1
sleep 5
done
+if test $RC != 0 ; then
+ echo "ldapsearch failed ($RC)!"
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
+ exit $RC
+fi
+
echo "Using ldapsearch to check that second slapd is running..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \
sleep 5
done
+if test $RC != 0 ; then
+ echo "ldapsearch failed ($RC)!"
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
+ exit $RC
+fi
+
for P in $PORT1 $PORT2 ; do
echo "Testing ldapsearch as anonymous for \"$BASEDN\" on port $P..."
$LDAPSEARCH -h $LOCALHOST -p $P -b "$BASEDN" -S "" \