[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepimlibs/kldap
From:       Szombathelyi György <gyurco () freemail ! hu>
Date:       2006-07-31 22:39:08
Message-ID: 1154385548.836933.29533.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 568379 by gyurco:

Separating connect and bind, fix a memleak.


 M  +17 -6     ldapconnection.cpp  
 M  +3 -1      ldapconnection.h  


--- trunk/KDE/kdepimlibs/kldap/ldapconnection.cpp #568378:568379
@@ -20,6 +20,8 @@
 
 #include "ldapconnection.h"
 
+#include <malloc.h>
+
 #include <klocale.h>
 #include <kdebug.h>
 
@@ -91,7 +93,8 @@
 
 QString LdapConnection::ldapError( int code )
 {
-  return i18n("No translated LDAP messages yet...");
+  //No translated error messages yet
+  return QString::fromUtf8( ldap_err2string( code ) );
 #ifdef LDAP_FOUND
   switch ( code ) {
     case LDAP_OPERATIONS_ERROR: return i18n("LDAP Operations error");
@@ -129,7 +132,9 @@
   Q_ASSERT( d->mLDAP );
   char *errmsg;
   ldap_get_option( d->mLDAP, LDAP_OPT_ERROR_STRING, &errmsg );
-  return QString::fromLocal8Bit( errmsg );
+  QString msg = QString::fromLocal8Bit( errmsg );
+  free( errmsg );
+  return msg;
 }
 
 bool LdapConnection::setSizeLimit( int sizelimit )
@@ -195,7 +200,8 @@
           break;
       }
     }
-    if ( data->proc( data->creds, data->data ) ) return LDAP_OTHER;
+    int retval;
+    if ( (retval = data->proc( data->creds, data->data )) ) return retval;
   }
 
   QString value;
@@ -233,7 +239,7 @@
   return LDAP_SUCCESS;
 }
 
-int LdapConnection::connect( SASL_Callback_Proc *saslproc, void *data )
+int LdapConnection::connect()
 {
   int ret;
   QString url;
@@ -291,7 +297,13 @@
       return ret;
     }
   }
+  return 0;
+}
 
+int LdapConnection::bind( SASL_Callback_Proc *saslproc, void *data )
+{
+  int ret;
+  
   if ( mServer.auth() == LdapServer::SASL ) {
 #ifdef SASL2_FOUND
     QString mech = mServer.mech();
@@ -310,7 +322,6 @@
       LDAP_SASL_INTERACTIVE, &kldap_sasl_interact, &sasldata );
 #else
     mError = i18n("No SASL support.");
-    close();
     return -1;
 #endif
   } else {
@@ -323,8 +334,8 @@
     ret = ldap_simple_bind_s( d->mLDAP, bindname.toUtf8(), pass.toUtf8() );
   }
   if ( ret != LDAP_SUCCESS ) {
+    kDebug() << "bind error: " << ret << " : " << ldapErrorString() << endl;
     mError = i18n("Cannot bind to LDAP server");
-    close();
   }
   return ret;
 }
--- trunk/KDE/kdepimlibs/kldap/ldapconnection.h #568378:568379
@@ -75,7 +75,9 @@
       void setServer( const LdapServer &server );
       /** Connects to the specified LDAP server with the appropriate SSL/TLS, bind method,
         * authentication method, username and password. Also sets sizelimit and timelimit */
-      int connect( SASL_Callback_Proc *saslproc = 0, void *data = 0);
+      int connect();
+
+      int bind( SASL_Callback_Proc *saslproc = 0, void *data = 0 );
       /** Closes the LDAP connection */
       void close();
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic