From 029a05a8d5113004f1f034f06282d847b4e0dfb0 Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Wed, 17 Oct 2007 17:07:05 +0000 Subject: [PATCH] use URIs instead of hostname/port --- contrib/ldapc++/src/LDAPAsynConnection.cpp | 32 ++++++++++++---------- contrib/ldapc++/src/LDAPAsynConnection.h | 18 +++++++----- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/contrib/ldapc++/src/LDAPAsynConnection.cpp b/contrib/ldapc++/src/LDAPAsynConnection.cpp index cb2542b514..edff84d95c 100644 --- a/contrib/ldapc++/src/LDAPAsynConnection.cpp +++ b/contrib/ldapc++/src/LDAPAsynConnection.cpp @@ -49,22 +49,26 @@ void LDAPAsynConnection::init(const string& hostname, int port){ " hostname:" << hostname << endl << " port:" << port << endl); - char* ldapuri; - LDAPURLDesc url; - memset( &url, 0, sizeof(url)); - - url.lud_scheme = strdup("ldap"); - url.lud_host = strdup(hostname.c_str()); - url.lud_port = port; - url.lud_scope = LDAP_SCOPE_DEFAULT; - - ldapuri = ldap_url_desc2str( &url ); + m_uri.setScheme("ldap"); + m_uri.setHost(hostname); + m_uri.setPort(port); + + const char *ldapuri = m_uri.getURLString().c_str(); int ret = ldap_initialize(&cur_session, ldapuri); if ( ret != LDAP_SUCCESS ) { throw LDAPException( ret ); } - m_host=hostname; - m_port=port; + int opt=3; + ldap_set_option(cur_session, LDAP_OPT_REFERRALS, LDAP_OPT_OFF); + ldap_set_option(cur_session, LDAP_OPT_PROTOCOL_VERSION, &opt); +} + +void LDAPAsynConnection::initialize(const std::string& uri){ + m_uri.setURLString(uri); + int ret = ldap_initialize(&cur_session, m_uri.getURLString().c_str()); + if ( ret != LDAP_SUCCESS ) { + throw LDAPException( ret ); + } int opt=3; ldap_set_option(cur_session, LDAP_OPT_REFERRALS, LDAP_OPT_OFF); ldap_set_option(cur_session, LDAP_OPT_PROTOCOL_VERSION, &opt); @@ -250,12 +254,12 @@ LDAP* LDAPAsynConnection::getSessionHandle() const{ const string& LDAPAsynConnection::getHost() const{ DEBUG(LDAP_DEBUG_TRACE,"LDAPAsynConnection::setHost()" << endl); - return m_host; + return m_uri.getHost(); } int LDAPAsynConnection::getPort() const{ DEBUG(LDAP_DEBUG_TRACE,"LDAPAsynConnection::getPort()" << endl); - return m_port; + return m_uri.getPort(); } LDAPAsynConnection* LDAPAsynConnection::referralConnect( diff --git a/contrib/ldapc++/src/LDAPAsynConnection.h b/contrib/ldapc++/src/LDAPAsynConnection.h index fe00df9c2d..5ac36c581a 100644 --- a/contrib/ldapc++/src/LDAPAsynConnection.h +++ b/contrib/ldapc++/src/LDAPAsynConnection.h @@ -88,6 +88,15 @@ class LDAPAsynConnection{ */ void init(const std::string& hostname, int port); + /** + * Initializes a connection to a server. + * + * There actually no communication to the server. Just the + * object is initialized + * @param uri The LDAP-Uri for the destination + */ + void initialize(const std::string& uri); + /** * Start TLS on this connection. This isn't in the constructor, * because it could fail (i.e. server doesn't have SSL cert, client @@ -306,14 +315,9 @@ class LDAPAsynConnection{ LDAPConstraints *m_constr; /** - * The name of the destination host - */ - std::string m_host; - - /** - * The port the destination server is running on. + * The URI of this connection */ - int m_port; + LDAPUrl m_uri; protected: /** -- 2.39.5