/* FIXME: shouldn't this be null? */
        const char      *save_matched = rs->sr_matched;
 
+       rs_assert_ready( rs );
+       rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia, we can set rs = non-entry */
+
        if ( !ldap_back_dobind( &lc, op, rs, LDAP_BACK_SENDERR ) ) {
                return rs->sr_err;
        }
 
                rs->sr_err, rs->sr_text ? rs->sr_text : "", NULL );
        assert( LDAP_UNSOLICITED_ERROR( rs->sr_err ) );
 
+       /* TODO: Flush the entry if sr_type == REP_SEARCH/REP_SEARCHREF? */
+       RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
+       rs->sr_flags &= ~REP_ENTRY_MASK;        /* paranoia */
+
        rs->sr_type = REP_EXTENDED;
        rs->sr_rspdata = NULL;
 
                rs->sr_err,
                rs->sr_sasldata ? (long) rs->sr_sasldata->bv_len : -1, NULL );
 
+       RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
+       rs->sr_flags &= ~REP_ENTRY_MASK;        /* paranoia */
+
        rs->sr_type = REP_SASL;
        rs->sr_tag = slap_req2res( op->o_tag );
        rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0;
                rs->sr_rspoid ? rs->sr_rspoid : "",
                rs->sr_rspdata != NULL ? rs->sr_rspdata->bv_len : 0 );
 
+       RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
+       rs->sr_flags &= ~REP_ENTRY_MASK;        /* paranoia */
+
        rs->sr_type = REP_EXTENDED;
        rs->sr_tag = slap_req2res( op->o_tag );
        rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0;
                rs->sr_rspoid ? rs->sr_rspoid : "",
                rs->sr_rspdata != NULL ? rs->sr_rspdata->bv_len : 0 );
 
+       RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
+       rs->sr_flags &= ~REP_ENTRY_MASK;        /* paranoia */
+
        rs->sr_type = REP_INTERMEDIATE;
        rs->sr_tag = LDAP_RES_INTERMEDIATE;
        rs->sr_msgid = op->o_msgid;