summaryrefslogtreecommitdiffstats
path: root/ldap/servers/plugins/chainingdb
diff options
context:
space:
mode:
authorRich Megginson <rmeggins@redhat.com>2009-07-06 12:11:01 -0600
committerRich Megginson <rmeggins@redhat.com>2009-07-07 08:32:42 -0600
commit209521323f731daad54682fd98715f7b22c88c78 (patch)
tree74a1fa8df06641fe543c8518e4db4357ab610828 /ldap/servers/plugins/chainingdb
parent3116dbec570b65d2d0a1df5bd000f6e63439e8ee (diff)
downloadds-209521323f731daad54682fd98715f7b22c88c78.tar.gz
ds-209521323f731daad54682fd98715f7b22c88c78.tar.xz
ds-209521323f731daad54682fd98715f7b22c88c78.zip
OpenLDAP supportcleanup
These changes allow the server to be built with OpenLDAP (2.4.17+). A brief summary of the changes: * #defines not provided by OpenLDAP were copied into slapi-plugin.h and protected with #ifndef blocks * where it made sense, I created slapi wrapper functions for things like URL and LDIF processing to abstract way the differences in the APIs * I created a new file utf8.c which contains the UTF8 functions from MozLDAP - this is only compiled when using OpenLDAP * I tried to clean up the code - use the _ext versions of LDAP functions everywhere since the older versions should be considered deprecated * I removed some unused code NOTE that this should still be considered a work in progress since it depends on functionality not yet present in a released version of OpenLDAP, for NSS crypto and for the LDIF public API.
Diffstat (limited to 'ldap/servers/plugins/chainingdb')
-rw-r--r--ldap/servers/plugins/chainingdb/cb.h1
-rw-r--r--ldap/servers/plugins/chainingdb/cb_bind.c4
-rw-r--r--ldap/servers/plugins/chainingdb/cb_instance.c9
-rw-r--r--ldap/servers/plugins/chainingdb/cb_search.c10
-rw-r--r--ldap/servers/plugins/chainingdb/cb_utils.c31
5 files changed, 13 insertions, 42 deletions
diff --git a/ldap/servers/plugins/chainingdb/cb.h b/ldap/servers/plugins/chainingdb/cb.h
index 209fdd37..a93950d9 100644
--- a/ldap/servers/plugins/chainingdb/cb.h
+++ b/ldap/servers/plugins/chainingdb/cb.h
@@ -485,7 +485,6 @@ int cb_back_cleanup (Slapi_PBlock *pb );
long cb_atol(char *str);
Slapi_Entry * cb_LDAPMessage2Entry(LDAP * ctx, LDAPMessage * msg, int attrsonly);
-char * cb_urlparse_err2string( int err );
char * cb_get_rootdn();
struct berval ** referrals2berval(char ** referrals);
cb_backend_instance * cb_get_instance(Slapi_Backend * be);
diff --git a/ldap/servers/plugins/chainingdb/cb_bind.c b/ldap/servers/plugins/chainingdb/cb_bind.c
index d8c9f87b..638404a6 100644
--- a/ldap/servers/plugins/chainingdb/cb_bind.c
+++ b/ldap/servers/plugins/chainingdb/cb_bind.c
@@ -162,7 +162,7 @@ cb_sasl_bind_once_s( cb_conn_pool *pool, char *dn, int method, char * mechanism,
char * matcheddnp2, * errmsgp2;
matcheddnp2=errmsgp2=NULL;
- rc = ldap_get_lderrno( ld, &matcheddnp2, &errmsgp2 );
+ rc = slapi_ldap_get_lderrno( ld, &matcheddnp2, &errmsgp2 );
/* Need to allocate errmsgs */
if (matcheddnp2)
@@ -185,7 +185,7 @@ cb_sasl_bind_once_s( cb_conn_pool *pool, char *dn, int method, char * mechanism,
&referrals, resctrlsp, 1 );
if ( referrals != NULL ) {
*refurlsp = referrals2berval( referrals );
- ldap_value_free( referrals );
+ slapi_ldap_value_free( referrals );
}
/* realloc matcheddn & errmsg because the mem alloc model */
/* may differ from malloc */
diff --git a/ldap/servers/plugins/chainingdb/cb_instance.c b/ldap/servers/plugins/chainingdb/cb_instance.c
index f813cec0..1c08bd9f 100644
--- a/ldap/servers/plugins/chainingdb/cb_instance.c
+++ b/ldap/servers/plugins/chainingdb/cb_instance.c
@@ -714,15 +714,16 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
char *url = (char *) value;
LDAPURLDesc *ludp=NULL;
int rc=LDAP_SUCCESS;
+ int secure = 0;
- if (( rc = ldap_url_parse( url, &ludp )) != 0 ) {
- PL_strncpyz(errorbuf,cb_urlparse_err2string( rc ), SLAPI_DSE_RETURNTEXT_SIZE);
+ if (( rc = slapi_ldap_url_parse( url, &ludp, 0, &secure )) != 0 ) {
+ PL_strncpyz(errorbuf,slapi_urlparse_err2string( rc ), SLAPI_DSE_RETURNTEXT_SIZE);
if (CB_CONFIG_PHASE_INITIALIZATION == phase)
inst->pool->url=slapi_ch_strdup("");
return(LDAP_INVALID_SYNTAX);
}
- if (ludp && (ludp->lud_options & LDAP_URL_OPT_SECURE) && inst && inst->rwl_config_lock) {
+ if (ludp && secure && inst && inst->rwl_config_lock) {
int isgss = 0;
PR_RWLock_Rlock(inst->rwl_config_lock);
isgss = inst->pool->mech && !PL_strcasecmp(inst->pool->mech, "GSSAPI");
@@ -768,7 +769,7 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
}
inst->pool->url = slapi_ch_strdup( url);
- inst->pool->secure = (( ludp->lud_options & LDAP_URL_OPT_SECURE ) != 0 );
+ inst->pool->secure = secure;
if ((ludp->lud_port==0) && inst->pool->secure)
inst->pool->port=CB_LDAP_SECURE_PORT;
diff --git a/ldap/servers/plugins/chainingdb/cb_search.c b/ldap/servers/plugins/chainingdb/cb_search.c
index 94b680f7..895d6f2b 100644
--- a/ldap/servers/plugins/chainingdb/cb_search.c
+++ b/ldap/servers/plugins/chainingdb/cb_search.c
@@ -298,7 +298,7 @@ chainingdb_build_candidate_list ( Slapi_PBlock *pb )
switch ( rc ) {
case -1:
/* An error occurred. return now */
- rc = ldap_get_lderrno(ld,NULL,NULL);
+ rc = slapi_ldap_get_lderrno(ld,NULL,NULL);
/* tuck away some errors in a OPERATION_ERROR */
if (CB_LDAP_CONN_ERROR(rc)) {
cb_send_ldap_result(pb,LDAP_OPERATIONS_ERROR, NULL,
@@ -366,7 +366,7 @@ chainingdb_build_candidate_list ( Slapi_PBlock *pb )
rc=-1;
} else
if ( rc != LDAP_SUCCESS ) {
- ldap_get_lderrno( ctx->ld, &matched_msg, &error_msg );
+ slapi_ldap_get_lderrno( ctx->ld, &matched_msg, &error_msg );
cb_send_ldap_result( pb, rc, matched_msg,
error_msg,0,NULL);
/* BEWARE: matched_msg and error_msg points */
@@ -558,7 +558,7 @@ chainingdb_next_search_entry ( Slapi_PBlock *pb )
case -1:
/* An error occurred. */
- rc = ldap_get_lderrno( ctx->ld, NULL, NULL );
+ rc = slapi_ldap_get_lderrno( ctx->ld, NULL, NULL );
slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_SET,NULL);
slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_ENTRY,NULL);
@@ -670,7 +670,7 @@ chainingdb_next_search_entry ( Slapi_PBlock *pb )
}
if (referrals != NULL) {
- ldap_value_free( referrals );
+ slapi_ldap_value_free( referrals );
}
return 0;
@@ -694,7 +694,7 @@ chainingdb_next_search_entry ( Slapi_PBlock *pb )
retcode=-1;
} else
if ( rc != LDAP_SUCCESS ) {
- ldap_get_lderrno( ctx->ld, &matched_msg, &error_msg );
+ slapi_ldap_get_lderrno( ctx->ld, &matched_msg, &error_msg );
cb_send_ldap_result( pb, rc, matched_msg, NULL, 0, NULL);
/* BEWARE: Don't free matched_msg && error_msg */
diff --git a/ldap/servers/plugins/chainingdb/cb_utils.c b/ldap/servers/plugins/chainingdb/cb_utils.c
index 128c2adc..4878e1a8 100644
--- a/ldap/servers/plugins/chainingdb/cb_utils.c
+++ b/ldap/servers/plugins/chainingdb/cb_utils.c
@@ -94,7 +94,7 @@ Slapi_Entry * cb_LDAPMessage2Entry(LDAP * ld, LDAPMessage * msg, int attrsonly)
}
}
if ( NULL != ber )
- ldap_ber_free( ber, 0 );
+ ber_free( ber, 0 );
return e;
}
@@ -120,35 +120,6 @@ struct berval ** referrals2berval(char ** referrals) {
return val;
}
-
-char *
-cb_urlparse_err2string( int err )
-{
- char *s="internal error";
-
- switch( err ) {
- case 0:
- s = "no error";
- break;
- case LDAP_URL_ERR_NOTLDAP:
- s = "missing ldap:// or ldaps://";
- break;
- case LDAP_URL_ERR_NODN:
- s = "missing suffix";
- break;
- case LDAP_URL_ERR_BADSCOPE:
- s = "invalid search scope";
- break;
- case LDAP_URL_ERR_MEM:
- s = "unable to allocate memory";
- break;
- case LDAP_URL_ERR_PARAM:
- s = "bad parameter to an LDAP URL function";
- break;
- }
-
- return( s );
-}
/*
** Return LDAP_SUCCESS if an internal operation needs to be forwarded to