2007-08-22 [colin] 2.10.0cvs150
authorColin Leroy <colin@colino.net>
Wed, 22 Aug 2007 11:06:03 +0000 (11:06 +0000)
committerColin Leroy <colin@colino.net>
Wed, 22 Aug 2007 11:06:03 +0000 (11:06 +0000)
* src/editldap.c
* src/editldap_basedn.c
* src/ldapquery.c
* src/ldapserver.c
* src/ldapserver.h
* src/ldapupdate.c
* src/ldaputil.c
* src/ldaputil.h
Fix ldap timeouts

ChangeLog
PATCHSETS
configure.ac
src/editldap.c
src/editldap_basedn.c
src/ldapquery.c
src/ldapserver.c
src/ldapserver.h
src/ldapupdate.c
src/ldaputil.c
src/ldaputil.h

index 5cabc2fcbb719645dec46b48d52428612e025f6f..f8f30358f862a8b10463dfa54f5277b1dfb69996 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2007-08-22 [colin]     2.10.0cvs150
+
+       * src/editldap.c
+       * src/editldap_basedn.c
+       * src/ldapquery.c
+       * src/ldapserver.c
+       * src/ldapserver.h
+       * src/ldapupdate.c
+       * src/ldaputil.c
+       * src/ldaputil.h
+               Fix ldap timeouts
+
 2007-08-22 [colin]     2.10.0cvs149
 
        * src/ldapquery.c
index 09f57ecbd41d3acc82a17864b4321b3fc4d50067..a97615661f7dfcccb6549098f0c2fd80e4ea63ba 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.1.4.11 -r 1.1.4.12 src/ldaputil.c;  ) > 2.10.0cvs147.patchset
 ( cvs diff -u -r 1.3.2.23 -r 1.3.2.24 src/ldapquery.c;  ) > 2.10.0cvs148.patchset
 ( cvs diff -u -r 1.3.2.24 -r 1.3.2.25 src/ldapquery.c;  ) > 2.10.0cvs149.patchset
+( cvs diff -u -r 1.8.2.28 -r 1.8.2.29 src/editldap.c;  cvs diff -u -r 1.10.2.12 -r 1.10.2.13 src/editldap_basedn.c;  cvs diff -u -r 1.3.2.25 -r 1.3.2.26 src/ldapquery.c;  cvs diff -u -r 1.4.2.14 -r 1.4.2.15 src/ldapserver.c;  cvs diff -u -r 1.2.2.9 -r 1.2.2.10 src/ldapserver.h;  cvs diff -u -r 1.1.2.14 -r 1.1.2.15 src/ldapupdate.c;  cvs diff -u -r 1.1.4.12 -r 1.1.4.13 src/ldaputil.c;  cvs diff -u -r 1.1.4.7 -r 1.1.4.8 src/ldaputil.h;  ) > 2.10.0cvs150.patchset
index c52def11aee0920518ba5935c378c1ff60a55e2a..f7e6b7d0763f87c24116b5aa9cddb7d3654933b9 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=10
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=149
+EXTRA_VERSION=150
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 00c10a78d58ac259d36c6aa5a4964b0d62804639..5a1c20f0712c7073226d75a86146d99aac194b0d 100644 (file)
@@ -246,7 +246,7 @@ static void edit_ldap_server_check( void ) {
        if( *sHost != '\0' ) {
                /* Test connection to server */
                debug_print("ldap server: %s\nport: %d\nssl: %d\ntls: %d\nbindDN: %s\n", sHost, iPort, ssl, tls, sBind);
-               if( ldaputil_test_connect( sHost, iPort, ssl, tls ) ) {
+               if( ldaputil_test_connect( sHost, iPort, ssl, tls, iTime ) ) {
                        /* Attempt to read base DN */
                        baseDN = ldaputil_read_basedn( sHost, iPort, sBind, sPass, iTime, ssl, tls );
                        if( baseDN ) {
index da746321cd648fa9171623ed96bc9ab90eefaa70..b2040dd4fbc4a47de29247b732edd7acb219c272 100644 (file)
@@ -266,7 +266,7 @@ static void edit_ldap_bdn_load_data(
        gtk_label_set_text(GTK_LABEL(ldapedit_basedn.port_label), sPort);
        if( *sHost != '\0' ) {
                /* Test connection to server */
-               if( ldaputil_test_connect( sHost, iPort, ssl, tls ) ) {
+               if( ldaputil_test_connect( sHost, iPort, ssl, tls, tov ) ) {
                        /* Attempt to read base DN */
                        baseDN = ldaputil_read_basedn( sHost, iPort, bindDN, bindPW, tov, ssl, tls );
                        if( baseDN ) {
index 9cd6dc264e1e6b1bd899b03c2c11fbb4d60ab79b..ff5582649addb916ea493e40145268bc0f43d145 100644 (file)
@@ -678,6 +678,8 @@ static gint ldapqry_connect( LdapQuery *qry ) {
        qry->elapsedTime = -1;
        ADDRQUERY_RETVAL(qry) = LDAPRC_INIT;
 
+       ldapsrv_set_options (ctl->timeOut, NULL);
+
        uri = g_strdup_printf("ldap%s://%s:%d",
                                ctl->enableSSL?"s":"",
                                ctl->hostName, ctl->port);
index 7fc9d7a99aac90317602372a9d397c604385f60f..1a987ee2fb0023922f01c27650b9c4b140b65cb4 100644 (file)
@@ -66,7 +66,6 @@ LdapServer *ldapsvr_create_noctl( void ) {
  */
 LdapServer *ldapsvr_create( void ) {
        LdapServer *server;
-
        server = ldapsvr_create_noctl();
        server->control = ldapctl_create();
        return server;
@@ -717,6 +716,20 @@ gint ldapsvr_read_data( LdapServer *server )
        return 0;
 }
 
+void ldapsrv_set_options (gint secs, LDAP *ld)
+{
+       static struct timeval timeout;
+       int i = LDAP_OPT_X_TLS_ALLOW;
+       int rc;
+       timeout.tv_sec = secs;
+       rc=ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &i);
+       debug_print("cert %s\n", ldap_err2string(rc));
+       
+       /* can crash old libldaps... */
+       rc=ldap_set_option(NULL, LDAP_OPT_NETWORK_TIMEOUT, &timeout);
+       debug_print("tm %s\n", ldap_err2string(rc));
+
+}
 #endif /* USE_LDAP */
 
 /*
index 65ee42cecf1f643c510d5073d7a25c69fb70f928..bb2345b63cb30ddac7784d2bede06f02de184bae 100644 (file)
@@ -27,6 +27,7 @@
 #ifdef USE_LDAP
 
 #include <glib.h>
+#include <ldap.h>
 
 #include "ldapctrl.h"
 #include "addritem.h"
@@ -92,6 +93,8 @@ void ldapsvr_retire_query     ( LdapServer *server );
 
 gboolean ldapsvr_reuse_previous        ( const LdapServer *server,
                                  const QueryRequest *req );
+
+void ldapsrv_set_options (gint secs, LDAP *ld);
 #endif /* USE_LDAP */
 
 #endif /* __LDAPSERVER_H__ */
index 251bd2a9579022350ee45ddcd49646fb7c051625..ad50aa193331fb24ec5ee687b2c560fff4abf0f2 100644 (file)
@@ -319,6 +319,7 @@ LDAP *ldapsvr_connect(LdapControl *ctl) {
 
        g_return_val_if_fail(ctl != NULL, NULL);
 
+       ldapsrv_set_options (ctl->timeOut, NULL);
        uri = g_strdup_printf("ldap%s://%s:%d",
                                ctl->enableSSL?"s":"",
                                ctl->hostName, ctl->port);
@@ -328,6 +329,7 @@ LDAP *ldapsvr_connect(LdapControl *ctl) {
        if (ld == NULL)
                return NULL;
 
+
        debug_print("connected to LDAP host %s on port %d\n", ctl->hostName, ctl->port);
 
 #ifdef USE_LDAP_TLS
index 2ed824c68de02cd44898f4831808ed2c10463a75..76f9fa7b5024f71732e7062a59dc52939ea243d6 100644 (file)
@@ -237,6 +237,8 @@ GList *ldaputil_read_basedn(
 
        /* Connect to server. */
 
+       ldapsrv_set_options (tov, NULL);
+
        uri = g_strdup_printf("ldap%s://%s:%d",
                        ssl?"s":"",
                        host, port);
@@ -309,7 +311,7 @@ GList *ldaputil_read_basedn(
  * \param  port Port number.
  * \return <i>TRUE</i> if connected successfully.
  */
-gboolean ldaputil_test_connect( const gchar *host, const gint port, int ssl, int tls ) {
+gboolean ldaputil_test_connect( const gchar *host, const gint port, int ssl, int tls, int secs ) {
        gboolean retVal = FALSE;
        LDAP *ld;
 #ifdef USE_LDAP_TLS
@@ -321,6 +323,7 @@ gboolean ldaputil_test_connect( const gchar *host, const gint port, int ssl, int
        if( host == NULL ) return retVal;
        if( port < 1 ) return retVal;
        
+       ldapsrv_set_options (secs, NULL);
        uri = g_strdup_printf("ldap%s://%s:%d",
                                ssl?"s":"",
                                host, port);
@@ -332,7 +335,7 @@ gboolean ldaputil_test_connect( const gchar *host, const gint port, int ssl, int
 
 #ifdef USE_LDAP_TLS
        if (ssl) {
-               GList *dummy = ldaputil_test_v3( ld, 10, &rc );
+               GList *dummy = ldaputil_test_v3( ld, secs, &rc );
                if (dummy)
                        g_list_free(dummy);
                if (LDAP_API_ERROR(rc))
index 681b58016ab24bec37cbcebe3e875a6cba3462d4..30eb7a2b4543e28a466e71bafef4533244426006 100644 (file)
@@ -32,7 +32,7 @@
 GList *ldaputil_read_basedn    ( const gchar *host, const gint port,
                                  const gchar *bindDN, const gchar *bindPW,
                                  const gint tov, int ssl, int tls );
-gboolean ldaputil_test_connect ( const gchar *host, const gint port, int ssl, int tls);
+gboolean ldaputil_test_connect ( const gchar *host, const gint port, int ssl, int tls, int secs);
 gboolean ldaputil_test_ldap_lib        ( void );
 int claws_ldap_simple_bind_s( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *passwd );