diff options
author | Noriko Hosoi <nhosoi@redhat.com> | 2009-08-04 11:54:34 -0700 |
---|---|---|
committer | Noriko Hosoi <nhosoi@redhat.com> | 2009-08-04 11:54:34 -0700 |
commit | 0565e8c39894b059191cfaff2176f758141ffe3b (patch) | |
tree | c654289fb6104ee5c1ef10f1373da9b9897f0a41 /ldap/servers/slapd/slap.h | |
parent | cbed8a2780469cdbf298c30e7f10da01c4356d03 (diff) | |
download | ds-0565e8c39894b059191cfaff2176f758141ffe3b.tar.gz ds-0565e8c39894b059191cfaff2176f758141ffe3b.tar.xz ds-0565e8c39894b059191cfaff2176f758141ffe3b.zip |
513916 Server doesn't ignore paged control, if page size and server's estimate of total no of entries are same
The code processing search results were returning the PAGE END without
knowing there are more entries to return or not. To learn it, introduced
"read ahead" one entry when it comes to the PAGE END. If there are more
entries, the code undo the read ahead, which prompts for the next page
on the client side. If there is no more entries, it returns the status
SEARCH END instead of PAGE END.
In addition to the read ahead implementation to fix the bug 513916,
* supporting Simple Paged Results for chaining backend is added.
* fixed a bug in idl_new_fetch (idl_new.c) -- idlistscanlimit was not
checked when the cursor comes to the end of an index file.
Diffstat (limited to 'ldap/servers/slapd/slap.h')
-rw-r--r-- | ldap/servers/slapd/slap.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/ldap/servers/slapd/slap.h b/ldap/servers/slapd/slap.h index af8603db..03658354 100644 --- a/ldap/servers/slapd/slap.h +++ b/ldap/servers/slapd/slap.h @@ -777,6 +777,7 @@ struct slapdplugin { IFP plg_un_db_next_search_entry; /* iterate */ IFP plg_un_db_next_search_entry_ext; VFPP plg_un_db_search_results_release; /* PAGED RESULTS */ + VFP plg_un_db_prev_search_results; /* PAGED RESULTS */ IFP plg_un_db_entry_release; IFP plg_un_db_compare; /* compare */ IFP plg_un_db_modify; /* modify */ @@ -815,6 +816,7 @@ struct slapdplugin { #define plg_next_search_entry plg_un.plg_un_db.plg_un_db_next_search_entry #define plg_next_search_entry_ext plg_un.plg_un_db.plg_un_db_next_search_entry_ext #define plg_search_results_release plg_un.plg_un_db.plg_un_db_search_results_release +#define plg_prev_search_results plg_un.plg_un_db.plg_un_db_prev_search_results #define plg_entry_release plg_un.plg_un_db.plg_un_db_entry_release #define plg_compare plg_un.plg_un_db.plg_un_db_compare #define plg_modify plg_un.plg_un_db.plg_un_db_modify @@ -1069,6 +1071,7 @@ typedef struct backend { #define be_next_search_entry_ext be_database->plg_next_search_entry_ext #define be_entry_release be_database->plg_entry_release #define be_search_results_release be_database->plg_search_results_release +#define be_prev_search_results be_database->plg_prev_search_results #define be_compare be_database->plg_compare #define be_modify be_database->plg_modify #define be_modrdn be_database->plg_modrdn |