Reset data more consistenlty. When resetting sr_entry after sending
data, reset sr_flag as well. Reset rs_attrs and Extended Operation
oid/data after setting and sending them.
- Parse sorted attrs more carefully:
Accept only attr={num}val.ldif and attr=val{num}.ldif and only base 10.
Sort "attr=foo" before "attr=foo{n}". Truncate at ".ldif" while sorting.
- Make the sort order independent of the LDIF files' order in the directory.
- Do not modify op->ors_scope, pass scope parameter instead.
- Save copies of dn/ndn before sending with REP_ENTRY_MODIFIABLE.
- Only the search baseDN may produce noSuchObject.
- More accurate result code.
- Sending continuation references:
Drop an unnecessary and wrong LDAP_SCOPE_BASE check. The correct
check would have been for DN == baseDN.
Do not rewrite the scope, the caller already did.
- ldif_prepare_create(): Check that parent/newSuperior is not a referral.
- Rewrite ldif_back_rerferrals(). Better error handling. Always pass
refs through referral_rewrite(). As in back-bdb, apply manageDSAit
only to the baseDN and do not use default_referral.
- Move mkdir() into ldif_write_entry(). Modrdn lacked this.
- Factor tests for whether to create entry & dir out to ldif_prepare_create().
- Ensure an entry always exists if the corresponding subtree directory does.
- Move get_parent_path() up, accept NULL output param and malloc errors.
- Start moving file handling near the top - move_file(), ldif_tempname().
- Rename get_entry_for_fd() -> ldif_read_entry() and move open() into it.
Rewrite slurp_file() as ldif_read_file(). Just stat() if output param==NULL.
- Rewrite ldif_write_entry(). Add LDAP_DEBUG_TRACE output.
- Reset rs->sr_text on success in apply_modify_to_entry(), not in its callers.
- Fix error test from ldif_write_entry() in ldif_move_entry().
- Start changing LDAP_UNWILLING_TO_PERFORM -> LDAP_OTHER for internal errors.
- Pass around LDAP result codes instead of errno.
- Rename spew_entry() -> ldif_write_entry(), move entry2str_mutex lock into it.
- Some other preparation for upcoming changes.
When upgrading, may need to slapcat/slapadd the database if back-ldif
is used as a general backend with chars like ':' or Windows' special
chars in DNs.
Change dn2path(), get_entry() and move_entry() prototypes/usage.
Remove unused statements/initializations. get_entry() now returns
a result code, reducing result code handling a bit.