summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/slap.h
diff options
context:
space:
mode:
authorNoriko Hosoi <nhosoi@redhat.com>2009-08-04 11:54:34 -0700
committerNoriko Hosoi <nhosoi@redhat.com>2009-08-04 11:54:34 -0700
commit0565e8c39894b059191cfaff2176f758141ffe3b (patch)
treec654289fb6104ee5c1ef10f1373da9b9897f0a41 /ldap/servers/slapd/slap.h
parentcbed8a2780469cdbf298c30e7f10da01c4356d03 (diff)
downloadds-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.h3
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