summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilip Hazel <ph10@hermes.cam.ac.uk>2005-01-13 11:12:12 +0000
committerPhilip Hazel <ph10@hermes.cam.ac.uk>2005-01-13 11:12:12 +0000
commit3295e65b6024775749615d87822f3580ecf00c18 (patch)
tree3d6f73a8f20590d69a80ad8917c84fd099012c1e /src
parent3d2a6e4d79f5227d66356409ff86fe0cda4cb7ab (diff)
The patch to support LDAP_SEARCH_RES_REFERENCE was unconditional; it
seems that some versions of LDAP don't have this (e.g. OpenLDAP v1, which is of course pretty old, but some people still use it). I've modified the patch to exclude the functionality when the macro isn't defined.
Diffstat (limited to 'src')
-rw-r--r--src/src/lookups/ldap.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/src/lookups/ldap.c b/src/src/lookups/ldap.c
index c32038ba1..ac1a8d824 100644
--- a/src/src/lookups/ldap.c
+++ b/src/src/lookups/ldap.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/lookups/ldap.c,v 1.7 2005/01/04 10:00:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/lookups/ldap.c,v 1.8 2005/01/13 11:12:12 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -789,9 +789,15 @@ if (rc == -1 || result == NULL)
/* A return code that isn't -1 doesn't necessarily mean there were no problems
with the search. The message must be an LDAP_RES_SEARCH_RESULT or
-LDAP_RES_SEARCH_REFERENCE or else it's something we can't handle. */
-
-if (rc != LDAP_RES_SEARCH_RESULT && rc != LDAP_RES_SEARCH_REFERENCE)
+LDAP_RES_SEARCH_REFERENCE or else it's something we can't handle. Some versions
+of LDAP do not define LDAP_RES_SEARCH_REFERENCE (LDAP v1 is one, it seems). So
+we don't provide that functionality when we can't. :-) */
+
+if (rc != LDAP_RES_SEARCH_RESULT
+#ifdef LDAP_RES_SEARCH_REFERENCE
+ && rc != LDAP_RES_SEARCH_REFERENCE
+#endif
+ )
{
*errmsg = string_sprintf("ldap_result returned unexpected code %d", rc);
goto RETURN_ERROR;
@@ -806,8 +812,11 @@ We need to parse the message to find out exactly what's happened. */
CSS &error2, NULL, NULL, 0);
DEBUG(D_lookup) debug_printf("ldap_parse_result: %d\n", ldap_parse_rc);
if (ldap_parse_rc < 0 &&
- (ldap_parse_rc != LDAP_NO_RESULTS_RETURNED ||
- ldap_rc != LDAP_RES_SEARCH_REFERENCE))
+ (ldap_parse_rc != LDAP_NO_RESULTS_RETURNED
+ #ifdef LDAP_RES_SEARCH_REFERENCE
+ || ldap_rc != LDAP_RES_SEARCH_REFERENCE
+ #endif
+ ))
{
*errmsg = string_sprintf("ldap_parse_result failed %d", ldap_parse_rc);
goto RETURN_ERROR;