Re: [exim-dev] Preliminary testing of a new Exim test suite

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Daniel Tiefnig
CC: exim-dev
Subject: Re: [exim-dev] Preliminary testing of a new Exim test suite
On Thu, 1 Dec 2005, Daniel Tiefnig wrote:

> According to this, it would be the safest thing to reduce requirements
> to an absolute minimum. Like require just AES encoding on the server
> and disable it in the client:
>
> {AES}{!AES:3DES}}
>
> Should do the trick quite everywhere, shouldn't it?


Yes, I think you are right there. I have made that change, and I have
just refreshed the tarball with the latest sources.

ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Testing/exim-testsuite-0.00.tar.bz2

Another 50 or so test scripts have been added. While doing this, I
discovered a bug in Exim - annoying, since 4.60 is freshly out - that
affects FreeBSD and probably other BSD-derived systems. If you are using
FreeBSD, test 1002 (an IPv6 test) will fail unless you apply the patch
below. At least this shows the value of making the tests run in
different environments. If anyone wants to know what this patch does,
here's the ChangeLog entry:

PH/01 The code for finding all the local interface addresses on a FreeBSD
      system running IPv6 was broken. This may well have applied to all BSD
      systems, as well as to others that have similar system calls. The broken
      code found IPv4 interfaces correctly, but gave incorrect values for the
      IPv6 interfaces. In particular, ::1 was not found. The effect in Exim was
      that it would not match correctly against @[] and not recognize the IPv6
      addresses as local.


-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.
Get the Exim 4 book:    http://www.uit.co.uk/exim-book




*** exim-4.60/src/os.c        Mon Nov 28 10:57:32 2005
--- src/os.c Thu Dec  1 14:21:25 2005
***************
*** 671,678 ****
    addrp = &ifreq.V_ifr_addr;


    #else
!   memcpy((char *)&ifreq, cp, sizeof(ifreq));
!   memcpy(addrbuf, (char *)&(ifreq.V_ifr_addr), len - sizeof(ifreq.V_ifr_name));
    addrp = (struct sockaddr *)addrbuf;
    #endif


--- 672,679 ----
    addrp = &ifreq.V_ifr_addr;


    #else
!   memcpy(addrbuf, cp + offsetof(struct V_ifreq, V_ifr_addr),
!     len - sizeof(ifreq.V_ifr_name));
    addrp = (struct sockaddr *)addrbuf;
    #endif