[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#5328) backends sending/setting results

Other bugs:

* be->be_chk_referrals:

  back-bdb and back-ldif can send errors from be->be_chk_referrals.
  As far as I can tell that is wrong:

  It should return an LDAP result code, but only send it if it is
  LDAP_REFERRAL.  backend_check_referrals() will send other errors,
  and success means it'll proceed to the be->be_<operation>() call.

* be->be_fetch() (bi->bi_entry_get_rw()):

  The LDAP result code matters to at least aci.c:dynacl_aci_mask() and
  frontendDB->be_compare() (compare.c:fe_op_compare()).
  These use it via backend_attribute(), using frontendDB->be_attribute()
  (fe_acl_attribute()), using backend.c:be_entry_get_rw().

  It can return just a boolean in back-null, back-ldif, back-relay
  and back-config.

  back-null usually pretends the entries are present, so maybe it should
  do "return oc ? LDAP_NO_SUCH_ATTRIBUTE : LDAP_BUSY;".

* Internal slapd errors.

  back-ldap:ldap_back_entry_get() can return LDAP_NO_MEMORY.
  Maybe that's OK and instead send_ldap_response() should change
  negative negative result codes to LDAP_OTHER?