From 500a46c6b7aca3556b2f77e5448fe7cff83ecae1 Mon Sep 17 00:00:00 2001 From: Chris Toshok Date: Thu, 18 Apr 2002 22:43:54 +0000 Subject: fill in source->ssl. (addressbook_source_dialog_set_source): set up 2002-04-18 Chris Toshok * gui/component/ldap-config.c (addressbook_dialog_get_source): fill in source->ssl. (addressbook_source_dialog_set_source): set up auth/scope/ssl option menus properly. * gui/component/addressbook-storage.c (addressbook_storage_init_source_uri): always include the limit/ssl in the uri so we don't need to rely on defaults everywhere. (ldap_source_foreach): store the ssl option. * gui/component/addressbook-storage.h: reorder SSLType to match the UI. * backend/pas/pas-backend-ldap.c: (struct _PASBackendLDAPPrivate) add field for ldap_timeout. (pas_backend_ldap_connect): reorder things a bit - we need to start tls before the root dse query, if we can. (pas_backend_ldap_load_uri): track the way ssl parameters are given in the uri, and parse out the timeout. * gui/component/ldap-config.c (port_changed_func): use the symbolic SSL name instead of an integer constant. svn path=/trunk/; revision=16529 --- addressbook/backend/pas/pas-backend-ldap.c | 56 ++++++++++++++---------------- 1 file changed, 27 insertions(+), 29 deletions(-) (limited to 'addressbook/backend') diff --git a/addressbook/backend/pas/pas-backend-ldap.c b/addressbook/backend/pas/pas-backend-ldap.c index 9af0a8c1a4..ee41bfcb69 100644 --- a/addressbook/backend/pas/pas-backend-ldap.c +++ b/addressbook/backend/pas/pas-backend-ldap.c @@ -94,6 +94,7 @@ struct _PASBackendLDAPPrivate { gchar *ldap_rootdn; /* the base dn of our searches */ int ldap_scope; /* the scope used for searches */ int ldap_limit; /* the search limit */ + int ldap_timeout; /* the search timeout */ gboolean ldap_v3; /* TRUE if the server supports protocol revision 3 (necessary for TLS) */ @@ -563,6 +564,24 @@ pas_backend_ldap_connect (PASBackendLDAP *bl) if (NULL != blpriv->ldap) { int ldap_error; + + if (bl->priv->use_tls) { + ldap_error = ldap_start_tls_s (blpriv->ldap, NULL, NULL); + if (LDAP_SUCCESS != ldap_error) { + if (bl->priv->use_tls == PAS_BACKEND_LDAP_TLS_ALWAYS) { + g_message ("TLS not available (fatal version), (ldap_error 0x%02x)", ldap_error); + ldap_unbind (blpriv->ldap); + blpriv->ldap = NULL; + return GNOME_Evolution_Addressbook_BookListener_TLSNotAvailable; + } + else { + g_message ("TLS not available (ldap_error 0x%02x)", ldap_error); + } + } + else + g_message ("TLS active"); + } + query_ldap_root_dse (bl); if (bl->priv->ldap_v3) { @@ -574,33 +593,6 @@ pas_backend_ldap_connect (PASBackendLDAP *bl) } } - if (bl->priv->use_tls) { - if (bl->priv->ldap_v3 /* the server supports v3 */) { - ldap_error = ldap_start_tls_s (blpriv->ldap, NULL, NULL); - if (LDAP_SUCCESS != ldap_error) { - if (bl->priv->use_tls == PAS_BACKEND_LDAP_TLS_ALWAYS) { - g_message ("TLS not available (fatal version), (ldap_error 0x%02x)", ldap_error); - ldap_unbind (blpriv->ldap); - blpriv->ldap = NULL; - return GNOME_Evolution_Addressbook_BookListener_TLSNotAvailable; - } - else { - g_message ("TLS not available (ldap_error 0x%02x)", ldap_error); - } - } - else - g_message ("TLS active"); - } - else { - g_warning ("user wants to use TLS, but server doesn't support LDAPv3"); - if (bl->priv->use_tls == PAS_BACKEND_LDAP_TLS_ALWAYS) { - ldap_unbind (blpriv->ldap); - blpriv->ldap = NULL; - return GNOME_Evolution_Addressbook_BookListener_TLSNotAvailable; - } - } - } - blpriv->connected = TRUE; /* check to see if evolutionPerson is supported, if we can (me @@ -2983,6 +2975,7 @@ pas_backend_ldap_load_uri (PASBackend *backend, char **attributes; int i; int limit = 100; + int timeout = 60; /* 1 minute */ g_assert (bl->priv->connected == FALSE); @@ -3008,12 +3001,12 @@ pas_backend_ldap_load_uri (PASBackend *backend, if (value) limit = atoi(value); } - else if (key_length == strlen("use_tls") && !strncmp (attributes[i], "use_tls", key_length)) { + else if (key_length == strlen("ssl") && !strncmp (attributes[i], "ssl", key_length)) { if (value) { if (!strncmp (value, "always", 6)) { bl->priv->use_tls = PAS_BACKEND_LDAP_TLS_ALWAYS; } - else if (!strncmp (value, "when-possible", 3)) { + else if (!strncmp (value, "whenever_possible", 3)) { bl->priv->use_tls = PAS_BACKEND_LDAP_TLS_WHEN_POSSIBLE; } else { @@ -3024,6 +3017,10 @@ pas_backend_ldap_load_uri (PASBackend *backend, bl->priv->use_tls = PAS_BACKEND_LDAP_TLS_WHEN_POSSIBLE; } } + else if (key_length == strlen("timeout") && !strncmp (attributes[i], "timeout", key_length)) { + if (value) + timeout = atoi (value); + } } ldap_error = ldap_url_parse ((char*)attributes[0], &lud); @@ -3039,6 +3036,7 @@ pas_backend_ldap_load_uri (PASBackend *backend, bl->priv->ldap_port = LDAP_PORT; bl->priv->ldap_rootdn = g_strdup(lud->lud_dn); bl->priv->ldap_limit = limit; + bl->priv->ldap_timeout = timeout; bl->priv->ldap_scope = lud->lud_scope; ldap_free_urldesc(lud); -- cgit v1.2.3