[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewSt…

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: exim-cvs
Subject: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewStuff exim/exim-src ACKNOWLEDGMENTS exim/exim-src/src/lookups ldap.c exim/exim-test/scripts/9000-LDAP 9000 exim/exim-test/stderr 9000 exim/
ph10 2006/07/17 10:18:09 BST

  Modified files:
    exim-doc/doc-txt     ChangeLog NewStuff 
    exim-src             ACKNOWLEDGMENTS 
    exim-src/src/lookups ldap.c 
    exim-test/scripts/9000-LDAP 9000 
    exim-test/stderr     9000 
    exim-test/stdout     9000 
  Log:
  Alain Williams' patch for disabling LDAP referrals when requested.


  Revision  Changes    Path
  1.379     +3 -0      exim/exim-doc/doc-txt/ChangeLog
  1.106     +4 -0      exim/exim-doc/doc-txt/NewStuff
  1.53      +2 -1      exim/exim-src/ACKNOWLEDGMENTS
  1.12      +40 -6     exim/exim-src/src/lookups/ldap.c
  1.2       +5 -0      exim/exim-test/scripts/9000-LDAP/9000
  1.2       +46 -13    exim/exim-test/stderr/9000
  1.2       +4 -0      exim/exim-test/stdout/9000


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.378
  retrieving revision 1.379
  diff -u -r1.378 -r1.379
  --- ChangeLog    14 Jul 2006 14:42:57 -0000    1.378
  +++ ChangeLog    17 Jul 2006 09:18:09 -0000    1.379
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.378 2006/07/14 14:42:57 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.379 2006/07/17 09:18:09 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -117,6 +117,9 @@
   PH/21 Added a call to PQsetNoticeProcessor() to catch pgsql "notices" and
         output them only if debugging. By default they are written stderr,
         apparently, which is not desirable.
  +
  +PH/22 Added Alain Williams' LDAP patch to support setting REFERRALS=off on
  +      queries.



Exim version 4.62

  Index: NewStuff
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
  retrieving revision 1.105
  retrieving revision 1.106
  diff -u -r1.105 -r1.106
  --- NewStuff    13 Jul 2006 13:53:32 -0000    1.105
  +++ NewStuff    17 Jul 2006 09:18:09 -0000    1.106
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.105 2006/07/13 13:53:32 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.106 2006/07/17 09:18:09 ph10 Exp $


   New Features in Exim
   --------------------
  @@ -43,6 +43,10 @@
      the use of the supplied code in a redirect router by setting the
      smtp_error_code option false. In this case, any SMTP code is quietly
      ignored.
  +
  +4. There is a new parameter for LDAP lookups called "referrals", which takes
  +   one of the settings "follow" (the default) or "nofollow". The latter stops
  +   the LDAP library from trying to follow referrals issued by the LDAP server.



Version 4.62

  Index: ACKNOWLEDGMENTS
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- ACKNOWLEDGMENTS    6 Jul 2006 14:28:03 -0000    1.52
  +++ ACKNOWLEDGMENTS    17 Jul 2006 09:18:09 -0000    1.53
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.52 2006/07/06 14:28:03 ph10 Exp $
  +$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.53 2006/07/17 09:18:09 ph10 Exp $


EXIM ACKNOWLEDGEMENTS

@@ -20,7 +20,7 @@
Philip Hazel

Lists created: 20 November 2002
-Last updated: 06 July 2006
+Last updated: 17 July 2006


   THE OLD LIST
  @@ -253,6 +253,7 @@
                             Patch for hosts_avoid_esmtp
   Stephen Wilcox            Patch for ignore_enotdir problem
   Alain Williams            Suggested patch for exicyclog options
  +                          PATCH for LDAP referrals option
   David Woodhouse           SQLite support proof of concept code
                             control=freeze/no_tell basic code
   Erik ?                    patch to use select() instead of poll() on OS X


  Index: ldap.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/lookups/ldap.c,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ldap.c    27 Jun 2006 13:39:01 -0000    1.11
  +++ ldap.c    17 Jul 2006 09:18:09 -0000    1.12
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/lookups/ldap.c,v 1.11 2006/06/27 13:39:01 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/lookups/ldap.c,v 1.12 2006/07/17 09:18:09 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -137,6 +137,7 @@
     tcplimit      max time for network activity, e.g. connect, or 0 for OS default
     deference     the dereference option, which is one of
                     LDAP_DEREF_{NEVER,SEARCHING,FINDING,ALWAYS}
  +  referrals     the referral option, which is LDAP_OPT_ON or LDAP_OPT_OFF


   Returns:        OK or FAIL or DEFER
                   FAIL is given only if a lookup was performed successfully, but
  @@ -146,7 +147,7 @@
   static int
   perform_ldap_search(uschar *ldap_url, uschar *server, int s_port, int search_type,
     uschar **res, uschar **errmsg, BOOL *defer_break, uschar *user, uschar *password,
  -  int sizelimit, int timelimit, int tcplimit, int dereference)
  +  int sizelimit, int timelimit, int tcplimit, int dereference, void *referrals)
   {
   LDAPURLDesc     *ludp = NULL;
   LDAPMessage     *result = NULL;
  @@ -556,6 +557,14 @@
   ldap_set_option(lcp->ld, LDAP_OPT_DEREF, (void *)&dereference);
   #endif


+/* Similarly for the referral setting; should the library follow referrals that
+the LDAP server returns? The conditional is just in case someone uses a library
+without it. */
+
+#if defined(LDAP_OPT_REFERRALS)
+ldap_set_option(lcp->ld, LDAP_OPT_REFERRALS, referrals);
+#endif
+
/* Start the search on the server. */

   DEBUG(D_lookup) debug_printf("Start search\n");
  @@ -977,8 +986,9 @@
   int timelimit = LDAP_NO_LIMIT;
   int sizelimit = LDAP_NO_LIMIT;
   int tcplimit = 0;
  -int dereference = LDAP_DEREF_NEVER;
   int sep = 0;
  +int dereference = LDAP_DEREF_NEVER;
  +void* referrals = LDAP_OPT_ON;
   uschar *url = ldap_url;
   uschar *p;
   uschar *user = NULL;
  @@ -1032,7 +1042,29 @@
           DEBUG(D_lookup) debug_printf("%s\n", *errmsg);
           return DEFER;
           }
  +      #endif


  +      #ifdef LDAP_OPT_REFERRALS
  +      else if (strncmpic(name, US"REFERRALS=", namelen) == 0)
  +        {
  +        if (strcmpic(value, US"follow") == 0) referrals = LDAP_OPT_ON;
  +        else if (strcmpic(value, US"nofollow") == 0) referrals = LDAP_OPT_OFF;
  +        else
  +          {
  +          *errmsg = string_sprintf("LDAP option REFERRALS is not \"follow\" "
  +            "or \"nofollow\"");
  +          DEBUG(D_lookup) debug_printf("%s\n", *errmsg);
  +          return DEFER;
  +          }
  +        }
  +      #else
  +      else if (strncmpic(name, US"REFERRALS=", namelen) == 0)
  +        {
  +        *errmsg = string_sprintf("LDAP_OP_REFERRALS not defined in this LDAP "
  +          "library - cannot use \"referrals\"");
  +        DEBUG(D_lookup) debug_printf("%s\n", *errmsg);
  +        return DEFER;
  +        }
         #endif


         else
  @@ -1081,8 +1113,8 @@


   DEBUG(D_lookup)
     debug_printf("LDAP parameters: user=%s pass=%s size=%d time=%d connect=%d "
  -    "dereference=%d\n", user, password, sizelimit, timelimit, tcplimit,
  -    dereference);
  +    "dereference=%d referrals=%s\n", user, password, sizelimit, timelimit,
  +    tcplimit, dereference, (referrals == LDAP_OPT_ON)? "on" : "off");


   /* If the request is just to check authentication, some credentials must
   be given. The password must not be empty because LDAP binds with an empty
  @@ -1119,7 +1151,8 @@
   if (eldap_default_servers == NULL || p[3] != '/')
     {
     return perform_ldap_search(url, NULL, 0, search_type, res, errmsg,
  -    &defer_break, user, password, sizelimit, timelimit, tcplimit, dereference);
  +    &defer_break, user, password, sizelimit, timelimit, tcplimit, dereference,
  +    referrals);
     }


   /* Loop through the default servers until OK or FAIL */
  @@ -1136,7 +1169,8 @@
       port = Uatoi(colon+1);
       }
     rc = perform_ldap_search(url, server, port, search_type, res, errmsg,
  -    &defer_break, user, password, sizelimit, timelimit, tcplimit, dereference);
  +    &defer_break, user, password, sizelimit, timelimit, tcplimit, dereference,
  +    referrals);
     if (rc != DEFER || defer_break) return rc;
     }



  Index: 9000
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/scripts/9000-LDAP/9000,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 9000    7 Feb 2006 10:54:50 -0000    1.1
  +++ 9000    17 Jul 2006 09:18:09 -0000    1.2
  @@ -173,3 +173,8 @@
   Expect ldap_search to fail
   ${lookup ldap {ldap:///o=top?mailRoutingAddress,mailHost,objectClass?sub?(&(mailLocalAddress=3-1546081-domain.net?wendling@???)(objectClass=inetLocalMailRecipient))}{$value}fail}
   ****
  +exim -d -be
  +Expect "Hazel" - checking referrals syntax
  +\${lookup ldap {time=1 referrals=nofollow ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{\$value}fail}
  +${lookup ldap {time=1 referrals=nofollow ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
  +****


  Index: 9000
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stderr/9000,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 9000    7 Feb 2006 10:47:31 -0000    1.1
  +++ 9000    17 Jul 2006 09:18:09 -0000    1.2
  @@ -28,7 +28,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=NULL port=389
   ldap_initialize with URL ldap://:389/
  @@ -52,7 +52,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=/tmp/ldap.sock port=0
   ldap_initialize with URL ldapi://%2Ftmp%2Fldap.sock
  @@ -84,7 +84,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldap://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldap://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldap://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=/tmp/ldap.sock port=389
   re-using cached connection to LDAP server /tmp/ldap.sock
  @@ -105,7 +105,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldaps://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldaps://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldaps://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=/tmp/ldap.sock port=636
   re-using cached connection to LDAP server /tmp/ldap.sock
  @@ -126,7 +126,7 @@
   internal_search_find: file="NULL"
     type=ldap key="user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=cn=manager,o=University of Cambridge,c=UK pass=secret size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=cn=manager,o=University of Cambridge,c=UK pass=secret size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=127.0.0.1 port=636
   ldap_initialize with URL ldaps://127.0.0.1:636/
  @@ -150,7 +150,7 @@
   internal_search_find: file="NULL"
     type=ldap key="user="cn=manager,o=University of Cambridge,c=UK" pass="secret" ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for user="cn=manager,o=University of Cambridge,c=UK" pass="secret" ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=cn=manager,o=University of Cambridge,c=UK pass=secret size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=cn=manager,o=University of Cambridge,c=UK pass=secret size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=127.0.0.1 port=636
   re-using cached connection to LDAP server 127.0.0.1:636
  @@ -178,7 +178,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=127.0.0.1 port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=127.0.0.1 port=0
   ldap_initialize with URL ldap://127.0.0.1:389/
  @@ -202,7 +202,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=/tmp/ldap.sock port=0
   ldap_initialize with URL ldapi://%2Ftmp%2Fldap.sock
  @@ -231,7 +231,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=/tmp/ldap.sock port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=/tmp/ldap.sock port=0
   ldap_initialize with URL ldapi://%2Ftmp%2Fldap.sock
  @@ -254,7 +254,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=/tmp/ldap.sock port=0
   re-using cached connection to LDAP server /tmp/ldap.sock
  @@ -275,7 +275,7 @@
   internal_search_find: file="NULL"
     type=ldap key="dereference=always ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for dereference=always ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=3
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=3 referrals=on
   perform_ldap_search: ldap URL = "ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=/tmp/ldap.sock port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=/tmp/ldap.sock port=0
   re-using cached connection to LDAP server /tmp/ldap.sock
  @@ -296,7 +296,7 @@
   internal_search_find: file="NULL"
     type=ldap key="ldapi://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for ldapi://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=NULL pass=NULL size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldapi://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=127.0.0.1 port=0
   ldapi requires an absolute path ("127.0.0.1" given)
  @@ -309,7 +309,7 @@
   internal_search_find: file="NULL"
     type=ldap key="user="cn=manager,o=University of Cambridge,c=UK" pass="se\"cret" ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
   database lookup required for user="cn=manager,o=University of Cambridge,c=UK" pass="se\"cret" ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  -LDAP parameters: user=cn=manager,o=University of Cambridge,c=UK pass=se"cret size=sss time=0 connect=0 dereference=0
  +LDAP parameters: user=cn=manager,o=University of Cambridge,c=UK pass=se"cret size=sss time=0 connect=0 dereference=0 referrals=on
   perform_ldap_search: ldap URL = "ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=0 tcplimit=0
   after ldap_url_parse: host=127.0.0.1 port=636
   ldap_initialize with URL ldaps://127.0.0.1:636/
  @@ -321,4 +321,37 @@
   search_tidyup called
   unbind LDAP connection to 127.0.0.1:636
   unbind LDAP connection to /tmp/ldap.sock:389
  +>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
  +Exim version x.yz ....
  +changed uid/gid: -C, -D, -be or -bf forces real uid
  +  uid=CALLER_UID gid=CALLER_GID pid=pppp
  +configuration file is TESTSUITE/test-config
  +admin user
  +originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
  +sender address = CALLER@???
  +search_open: ldap "NULL"
  +search_find: file="NULL"
  +  key="time=1 referrals=nofollow ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" partial=-1 affix=NULL starflags=0
  +LRU list:
  +internal_search_find: file="NULL"
  +  type=ldap key="time=1 referrals=nofollow ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)"
  +database lookup required for time=1 referrals=nofollow ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)
  +LDAP parameters: user=NULL pass=NULL size=sss time=1 connect=0 dereference=0 referrals=off
  +perform_ldap_search: ldap URL = "ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)" server=NULL port=0 sizelimit=0 timelimit=1 tcplimit=0
  +after ldap_url_parse: host=NULL port=389
  +ldap_initialize with URL ldap://:389/
  +initialized for LDAP (v3) server NULL:389
  +LDAP_OPT_X_TLS_TRY set
  +binding with user=NULL password=NULL
  +Start search
  +ldap_result loop
  +LDAP entry loop
  +LDAP attr loop sn:Hazel
  +search ended by ldap_result yielding 101
  +ldap_parse_result: 0
  +ldap_parse_result yielded 0: Success
  +LDAP search: returning: Hazel
  +lookup yielded: Hazel
  +search_tidyup called
  +unbind LDAP connection to NULL:389
   >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>


  Index: 9000
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stdout/9000,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 9000    7 Feb 2006 10:47:37 -0000    1.1
  +++ 9000    17 Jul 2006 09:18:09 -0000    1.2
  @@ -177,3 +177,7 @@
   > Expect ldap_search to fail
   > Failed: lookup of "ldap:///o=top?mailRoutingAddress,mailHost,objectClass?sub?(&(mailLocalAddress=3-1546081-domain.net?wendling@???)(objectClass=inetLocalMailRecipient))" gave DEFER: ldap_search failed: -7, Bad search filter

>
+> Expect "Hazel" - checking referrals syntax
+> ${lookup ldap {time=1 referrals=nofollow ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+> Hazel
+>