summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoriko Hosoi <nhosoi@kiki.usersys.redhat.com>2009-06-03 08:48:14 -0700
committerNoriko Hosoi <nhosoi@kiki.usersys.redhat.com>2009-06-03 08:48:14 -0700
commitdacd95700c876d7202193683ed52aec9f3c19f48 (patch)
tree6c55bdb3eff660f1e78c82f6ca5e7fbce046e1f0
parentd7828f54c12f0c50e7165f8d7e849f8ffa3ff167 (diff)
downloadds-dacd95700c876d7202193683ed52aec9f3c19f48.tar.gz
ds-dacd95700c876d7202193683ed52aec9f3c19f48.tar.xz
ds-dacd95700c876d7202193683ed52aec9f3c19f48.zip
Compiler warnings and paged results on DSE
1) Fixing compiler warnings on regex.c. 2) Adding dse_search_set_release to dse.c to support simple paged results on DSE.
-rw-r--r--ldap/servers/slapd/backend_manager.c1
-rw-r--r--ldap/servers/slapd/connection.c4
-rw-r--r--ldap/servers/slapd/dse.c6
-rw-r--r--ldap/servers/slapd/opshared.c11
-rw-r--r--ldap/servers/slapd/proto-slap.h2
-rw-r--r--ldap/servers/slapd/regex.c14
-rw-r--r--ldap/servers/slapd/slapi-plugin.h6
7 files changed, 30 insertions, 14 deletions
diff --git a/ldap/servers/slapd/backend_manager.c b/ldap/servers/slapd/backend_manager.c
index b562a299..78010e64 100644
--- a/ldap/servers/slapd/backend_manager.c
+++ b/ldap/servers/slapd/backend_manager.c
@@ -138,6 +138,7 @@ be_new_internal(struct dse *pdse, const char *type, const char *name)
be->be_database->plg_unbind= &dse_unbind;
be->be_database->plg_search= &dse_search;
be->be_database->plg_next_search_entry= &dse_next_search_entry;
+ be->be_database->plg_search_results_release= &dse_search_set_release;
be->be_database->plg_compare= &be_plgfn_unwillingtoperform;
be->be_database->plg_modify= &dse_modify;
be->be_database->plg_modrdn= &be_plgfn_unwillingtoperform;
diff --git a/ldap/servers/slapd/connection.c b/ldap/servers/slapd/connection.c
index 874766b8..421b3e52 100644
--- a/ldap/servers/slapd/connection.c
+++ b/ldap/servers/slapd/connection.c
@@ -199,7 +199,9 @@ connection_cleanup(Connection *conn)
sasl_dispose((sasl_conn_t**)&conn->c_sasl_conn);
/* PAGED_RESULTS */
if (conn->c_search_result_set) {
- conn->c_current_be->be_search_results_release(&(conn->c_search_result_set));
+ if (conn->c_current_be->be_search_results_release) {
+ conn->c_current_be->be_search_results_release(&(conn->c_search_result_set));
+ }
conn->c_search_result_set = NULL;
}
conn->c_current_be = NULL;
diff --git a/ldap/servers/slapd/dse.c b/ldap/servers/slapd/dse.c
index 956c29d4..c48d1f20 100644
--- a/ldap/servers/slapd/dse.c
+++ b/ldap/servers/slapd/dse.c
@@ -2305,6 +2305,12 @@ dse_search_set_clean(dse_search_set *ss)
}
}
+void
+dse_search_set_release (void **ss)
+{
+ dse_search_set_delete(*(dse_search_set **)ss);
+}
+
static void
dse_search_set_delete (dse_search_set *ss)
{
diff --git a/ldap/servers/slapd/opshared.c b/ldap/servers/slapd/opshared.c
index 0f3c0681..249e7e4f 100644
--- a/ldap/servers/slapd/opshared.c
+++ b/ldap/servers/slapd/opshared.c
@@ -500,9 +500,9 @@ op_shared_search (Slapi_PBlock *pb, int send_result)
if (operation->o_flags & OP_FLAG_PAGED_RESULTS) {
time_t optime, time_up;
int tlimit;
- slapi_pblock_get( pb, SLAPI_SEARCH_TIMELIMIT, &tlimit );
- slapi_pblock_get( pb, SLAPI_OPINITIATED_TIME, &optime );
- time_up = (tlimit==-1 ? -1 : optime + tlimit); /* -1: no time limit */
+ slapi_pblock_get( pb, SLAPI_SEARCH_TIMELIMIT, &tlimit );
+ slapi_pblock_get( pb, SLAPI_OPINITIATED_TIME, &optime );
+ time_up = (tlimit==-1 ? -1 : optime + tlimit); /* -1: no time limit */
pagedresults_set_timelimit(pb->pb_conn, time_up);
}
@@ -555,10 +555,15 @@ op_shared_search (Slapi_PBlock *pb, int send_result)
}
if ((operation->o_flags & OP_FLAG_PAGED_RESULTS) && pr_search_result) {
+ void *sr = NULL;
/* PAGED RESULTS and already have the search results from the prev op */
slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_SET, pr_search_result );
rc = send_results_ext (pb, 1, &pnentries, pagesize, &pr_stat);
+ /* search result could be reset in the backend/dse */
+ slapi_pblock_get(pb, SLAPI_SEARCH_RESULT_SET, &sr);
+ pagedresults_set_search_result(pb->pb_conn, sr);
+
if (PAGEDRESULTS_SEARCH_END == pr_stat) {
/* no more entries to send in the backend */
if (NULL == next_be) {
diff --git a/ldap/servers/slapd/proto-slap.h b/ldap/servers/slapd/proto-slap.h
index 6c7426e2..edd66d08 100644
--- a/ldap/servers/slapd/proto-slap.h
+++ b/ldap/servers/slapd/proto-slap.h
@@ -603,6 +603,8 @@ void dse_set_dont_ever_write_dse_files(void);
void dse_unset_dont_ever_write_dse_files(void);
int dse_next_search_entry (Slapi_PBlock *pb);
char *dse_read_next_entry( char *buf, char **lastp );
+void dse_search_set_release (void **ss);
+
/*
diff --git a/ldap/servers/slapd/regex.c b/ldap/servers/slapd/regex.c
index 9746aa03..24e7b860 100644
--- a/ldap/servers/slapd/regex.c
+++ b/ldap/servers/slapd/regex.c
@@ -61,7 +61,7 @@ struct slapi_regex_handle {
* \warning The regex handler should be released by slapi_re_free().
*/
Slapi_Regex *
-slapi_re_comp( char *pat, char **error )
+slapi_re_comp( const char *pat, const char **error )
{
Slapi_Regex *re_handle = NULL;
pcre *re = NULL;
@@ -94,7 +94,7 @@ slapi_re_comp( char *pat, char **error )
* \warning The regex handler should be released by slapi_re_free().
*/
int
-slapi_re_exec( Slapi_Regex *re_handle, char *subject, time_t time_up )
+slapi_re_exec( Slapi_Regex *re_handle, const char *subject, time_t time_up )
{
int rc;
time_t curtime = current_time();
@@ -143,16 +143,16 @@ slapi_re_exec( Slapi_Regex *re_handle, char *subject, time_t time_up )
* \warning The regex handler should be released by slapi_re_free().
*/
int
-slapi_re_subs( Slapi_Regex *re_handle,
- char *subject, char *src, char **dst, unsigned long dstlen )
+slapi_re_subs( Slapi_Regex *re_handle, const char *subject,
+ const char *src, char **dst, unsigned long dstlen )
{
int thislen = 0;
int len = 0;
int pin;
int *ovector;
char *mydst = *dst;
- char *substring_start;
- char *p;
+ const char *substring_start;
+ const char *p;
if (NULL == src || NULL == re_handle || NULL == re_handle->re_ovector) {
memset(*dst, '\0', dstlen);
@@ -163,7 +163,7 @@ slapi_re_subs( Slapi_Regex *re_handle,
ovector = re_handle->re_ovector;
- for (p = src; *p != NULL; p++) {
+ for (p = src; *p != '\0'; p++) {
if ('&' == *p) {
if (re_handle->re_oveccount <= 1) {
memset(*dst, '\0', dstlen);
diff --git a/ldap/servers/slapd/slapi-plugin.h b/ldap/servers/slapd/slapi-plugin.h
index b5e3441a..135f49b7 100644
--- a/ldap/servers/slapd/slapi-plugin.h
+++ b/ldap/servers/slapd/slapi-plugin.h
@@ -3364,7 +3364,7 @@ typedef struct slapi_regex_handle Slapi_Regex;
* the compiled pattern. NULL if the compile fails.
* \warning The regex handler should be released by slapi_re_free().
*/
-Slapi_Regex *slapi_re_comp( char *pat, char **error );
+Slapi_Regex *slapi_re_comp( const char *pat, const char **error );
/**
* Matches a compiled regular expression pattern against a given string.
* A thin wrapper of pcre_exec.
@@ -3378,7 +3378,7 @@ Slapi_Regex *slapi_re_comp( char *pat, char **error );
* \return This function returns other values if any error occurred.
* \warning The regex handler should be released by slapi_re_free().
*/
-int slapi_re_exec( Slapi_Regex *re_handle, char *subject, time_t time_up );
+int slapi_re_exec( Slapi_Regex *re_handle, const char *subject, time_t time_up );
/**
* Substitutes '&' or '\#' in the param src with the matched string.
*
@@ -3391,7 +3391,7 @@ int slapi_re_exec( Slapi_Regex *re_handle, char *subject, time_t time_up );
* \return This function returns 0 if the substitution failed.
* \warning The regex handler should be released by slapi_re_free().
*/
-int slapi_re_subs( Slapi_Regex *re_handle, char *subject, char *src, char **dst, unsigned long dstlen );
+int slapi_re_subs( Slapi_Regex *re_handle, const char *subject, const char *src, char **dst, unsigned long dstlen );
/**
* Releases the regex handler which was returned from slapi_re_comp.
*