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

Pàgina inicial
Delete this message
Reply to this message
Autor: Philip Hazel
Data:  
A: exim-cvs
Assumpte: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim/exim-src ACKNOWLEDGMENTS exim/exim-src/src/lookups ldap.c exim/exim-test-orig/AutoTest/stderr 901
ph10 2004/12/21 12:00:59 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog 
    exim-src             ACKNOWLEDGMENTS 
    exim-src/src/lookups ldap.c 
    exim-test-orig/AutoTest/stderr 901 
  Log:
  Alex Miller's patch for LDAP_RES_SEARCH_REFERENCE.


  Revision  Changes    Path
  1.52      +11 -0     exim/exim-doc/doc-txt/ChangeLog
  1.10      +2 -1      exim/exim-src/ACKNOWLEDGMENTS
  1.5       +13 -8     exim/exim-src/src/lookups/ldap.c
  1.3       +11 -0     exim/exim-test-orig/AutoTest/stderr/901


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- ChangeLog    21 Dec 2004 11:28:38 -0000    1.51
  +++ ChangeLog    21 Dec 2004 12:00:59 -0000    1.52
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.51 2004/12/21 11:28:38 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.52 2004/12/21 12:00:59 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -222,6 +222,17 @@
       the queue_time_overall log selector is set), a one-byte patch to exigrep
       was needed to allow it to recognize "Completed" as not the last thing in
       the line.
  +
  +54. The LDAP lookup was not handling a return of LDAP_RES_SEARCH_REFERENCE. A
  +    patch that reportedly fixes this has been added. I am not expert enough to
  +    create a test for it. This is what the patch creator wrote:
  +
  +      "I found a little strange behaviour of ldap code when working with
  +      Windows 2003 AD Domain, where users was placed in more than one
  +      Organization Units. When I tried to give exim partial DN, the exit code
  +      of ldap_search was unknown to exim because of LDAP_RES_SEARCH_REFERENCE.
  +      But simultaneously result of request was absolutely normal ldap result,
  +      so I produce this patch..."



Exim version 4.43

  Index: ACKNOWLEDGMENTS
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ACKNOWLEDGMENTS    20 Dec 2004 15:24:28 -0000    1.9
  +++ ACKNOWLEDGMENTS    21 Dec 2004 12:00:59 -0000    1.10
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.9 2004/12/20 15:24:28 ph10 Exp $
  +$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.10 2004/12/21 12:00:59 ph10 Exp $


EXIM ACKNOWLEDGEMENTS

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

Lists created: 20 November 2002
-Last updated: 20 December 2004
+Last updated: 21 December 2004


   THE OLD LIST
  @@ -172,6 +172,7 @@
   Andreas Metzler           Patch for message_id_header_domain
                             Suggested patch for multi-config files in scripts bug
   Alex Miller               Suggested readline() patch                           
  +                          Patch for LDAP_RES_SEARCH_REFERENCE handling
   Andreas Mueller           Patch for logging uncompleted SMTP transactions
   Pete Naylor               Patch for LDAP TCP connect timeout setting
   Marcin Owsiany            Diagnosis of a tricky timeout failure bug


  Index: ldap.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/lookups/ldap.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ldap.c    17 Nov 2004 16:31:45 -0000    1.4
  +++ ldap.c    21 Dec 2004 12:00:59 -0000    1.5
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/lookups/ldap.c,v 1.4 2004/11/17 16:31:45 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/lookups/ldap.c,v 1.5 2004/12/21 12:00:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -167,7 +167,7 @@
   int    attr_count = 0;
   int    error_yield = DEFER;
   int    msgid;
  -int    rc;
  +int    rc, ldap_rc, ldap_parse_rc;
   int    port;
   int    ptr = 0;
   int    rescount = 0;
  @@ -779,10 +779,10 @@
     }


/* 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 else it's
-something we can't handle. */
+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)
  +if (rc != LDAP_RES_SEARCH_RESULT && rc != LDAP_RES_SEARCH_REFERENCE)
     {
     *errmsg = string_sprintf("ldap_result returned unexpected code %d", rc);
     goto RETURN_ERROR;
  @@ -791,11 +791,16 @@
   /* We have a result message from the server. This doesn't yet mean all is well.
   We need to parse the message to find out exactly what's happened. */


  -  #if defined LDAP_LIB_SOLARIS || defined LDAP_LIB_OPENLDAP2
  -  if (ldap_parse_result(lcp->ld, result, &rc, CSS &matched, CSS &error2, NULL,
  -      NULL, 0) < 0)
  +#if defined LDAP_LIB_SOLARIS || defined LDAP_LIB_OPENLDAP2
  +  ldap_rc = rc;
  +  ldap_parse_rc = ldap_parse_result(lcp->ld, result, &rc, CSS &matched, 
  +    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))
       {
  -    *errmsg = US"ldap_parse_result failed";
  +    *errmsg = string_sprintf("ldap_parse_result failed %d", ldap_parse_rc);
       goto RETURN_ERROR;
       }
     error1 = US ldap_err2string(rc);


  Index: 901
  ===================================================================
  RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stderr/901,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 901    10 Nov 2004 14:15:20 -0000    1.2
  +++ 901    21 Dec 2004 12:00:59 -0000    1.3
  @@ -51,6 +51,7 @@
   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
  @@ -73,6 +74,7 @@
   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
  @@ -102,6 +104,7 @@
   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
  @@ -122,6 +125,7 @@
   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
  @@ -145,6 +149,7 @@
   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
  @@ -165,6 +170,7 @@
   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
  @@ -198,6 +204,7 @@
   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
  @@ -220,6 +227,7 @@
   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
  @@ -251,6 +259,7 @@
   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
  @@ -271,6 +280,7 @@
   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
  @@ -291,6 +301,7 @@
   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