Full_Name: Hallvard B Furuseth Version: RE24, 0e03b1369f4da5db9d0bdd2445b3a7ccc0c5638f OS: Linux x86_64 URL: Submission from: (NULL) (195.1.106.125) Submitted by: hallvard
syncprov_db_open() does not set op->o_tag before submitting syncprov_db_otask. This prevents rs_flush_entry() before slap_send_search_entry()'s error return.
Seen in test018 and test048 with back-ldif.
Two possible fixes:
--- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -3088,2 +3088,3 @@ syncprov_db_open( if ( si->si_ctxcsn && !SLAP_DBCLEAN( be )) { + op->o_tag = LDAP_REQ_SEARCH; op->o_req_dn = be->be_suffix[0];
Hopefully the lack of o_tag is not a feature, deliberately preventing some things from assuming it's a search request. E.g. maybe more fields in the fake op must be filled in.
Or this test could be less paranoid:
--- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -1466,3 +1466,3 @@ error_return:;
- if ( op->o_tag == LDAP_REQ_SEARCH && rs->sr_type == REP_SEARCH ) { + if ( rs->sr_type == REP_SEARCH ) { rs_flush_entry( op, rs, NULL );
It was a bad idea to trust sr_type when the test was written. The SlapReply cleanup (ITS#6758) mostly fixed that, but is not complete.
OpenLDAP passes make alltests with both patches and USE_RS_ASSERT, except an unrelated error which also fails in unpatched RE24.