On Sat, Feb 22, 2003 at 11:40:24AM +0200, Kostas Kalevras wrote:
> Where's the patch?

Heh. Sure enough, I forgot to attach the patch. It's attached this time,
I swear! :)

-- 
Derrik Pates
[EMAIL PROTECTED]
[EMAIL PROTECTED]
--- /root/radiusd/src/modules/rlm_ldap/rlm_ldap.c       Fri Jan 24 08:35:30 2003
+++ radiusd/src/modules/rlm_ldap/rlm_ldap.c     Fri Feb 21 20:19:28 2003
@@ -186,6 +186,9 @@
 
 typedef struct {
        char           *server;
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+       char           *server_uri;
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
        int             port;
        int             timelimit;
        struct timeval  net_timeout;
@@ -223,6 +226,9 @@
 static CONF_PARSER module_config[] = {
        {"server", PW_TYPE_STRING_PTR, offsetof(ldap_instance,server), NULL, 
"localhost"},
        {"port", PW_TYPE_INTEGER, offsetof(ldap_instance,port), NULL, "389"},
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+       {"server_uri", PW_TYPE_STRING_PTR, offsetof(ldap_instance,server_uri), NULL, 
NULL},
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
        /* wait forever on network activity */
        {"net_timeout", PW_TYPE_INTEGER, offsetof(ldap_instance,net_timeout.tv_sec), 
NULL, "10"},
        /* wait forever for search results */
@@ -320,11 +326,17 @@
                return -1;
        }
 
-       if (inst->server == NULL) {
-               radlog(L_ERR, "rlm_ldap: missing 'server' directive.");
-               free(inst);
-               return -1;
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+       if (inst->server_uri == NULL) {
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
+               if (inst->server == NULL) {
+                       radlog(L_ERR, "rlm_ldap: missing 'server' directive.");
+                       free(inst);
+                       return -1;
+               }
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
        }
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
  
        inst->timeout.tv_usec = 0;
        inst->net_timeout.tv_usec = 0;
@@ -1352,12 +1364,26 @@
        int             ldap_errno = 0;
        LDAPMessage    *res;
 
-       DEBUG("rlm_ldap: (re)connect to %s:%d, authentication %d", inst->server, 
inst->port, auth);
-       if ((ld = ldap_init(inst->server, inst->port)) == NULL) {
-               radlog(L_ERR, "rlm_ldap: ldap_init() failed");
-               *result = RLM_MODULE_FAIL;
-               return (NULL);
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+       if (inst->server_uri) {
+               DEBUG("rlm_ldap: (re)connect to %s, authentication %d", 
inst->server_uri, auth);
+               if (ldap_initialize(&ld, inst->server_uri) != LDAP_SUCCESS) {
+                       radlog(L_ERR, "rlm_ldap: ldap_initialize() failed");
+                       *result = RLM_MODULE_FAIL;
+                       return (NULL);
+               }
+       }
+       else {
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
+               DEBUG("rlm_ldap: (re)connect to %s:%d, authentication %d", 
inst->server, inst->port, auth);
+               if ((ld = ldap_init(inst->server, inst->port)) == NULL) {
+                       radlog(L_ERR, "rlm_ldap: ldap_init() failed");
+                       *result = RLM_MODULE_FAIL;
+                       return (NULL);
+               }
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
        }
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
        if (ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, (void *) 
&(inst->net_timeout)) != LDAP_OPT_SUCCESS) {
                radlog(L_ERR, "rlm_ldap: Could not set LDAP_OPT_NETWORK_TIMEOUT 
%ld.%ld", inst->net_timeout.tv_sec, inst->net_timeout.tv_usec);
        }

Reply via email to