[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim… |
このメッセージは次のスレッドの一部です: | |
---|---|
日付によるスレッドの仕分け | |
Modified files: exim-doc/doc-txt ChangeLog exim-src/src/routers rf_lookup_hostlist.c exim-test/dnszones-src db.test.ex exim-test/scripts/0000-Basic 0430 exim-test/stdout 0430 Log: Fix manualroute bug for localhost following multihomed host.
Revision Changes Path 1.495 +7 -0 exim/exim-doc/doc-txt/ChangeLog 1.10 +9 -4 exim/exim-src/src/routers/rf_lookup_hostlist.c 1.6 +5 -0 exim/exim-test/dnszones-src/db.test.ex 1.2 +2 -0 exim/exim-test/scripts/0000-Basic/0430 1.5 +4 -0 exim/exim-test/stdout/0430
Index: ChangeLog =================================================================== RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v retrieving revision 1.494 retrieving revision 1.495 diff -u -r1.494 -r1.495 --- ChangeLog 13 Mar 2007 16:37:57 -0000 1.494 +++ ChangeLog 14 Mar 2007 11:22:23 -0000 1.495 @@ -1,4 +1,4 @@ -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.494 2007/03/13 16:37:57 ph10 Exp $ +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.495 2007/03/14 11:22:23 ph10 Exp $
Change log file for Exim from version 4.21 ------------------------------------------- @@ -167,6 +167,13 @@ to "ignore", to completely ignore a host whose IP address cannot be found. If all hosts are ignored, the behaviour is controlled by the new host_all_ignored option. + +PH/39 In a list of hosts for manualroute, if one item (either because of multi- + homing or because of multiple MX records with /mx) generated more than + one IP address, and the following item turned out to be the local host, + all the secondary addresses of the first item were incorrectly removed + from the list, along with the local host and any following hosts (which + is what is supposed to happen).
Index: rf_lookup_hostlist.c =================================================================== RCS file: /home/cvs/exim/exim-src/src/routers/rf_lookup_hostlist.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- rf_lookup_hostlist.c 13 Mar 2007 15:32:48 -0000 1.9 +++ rf_lookup_hostlist.c 14 Mar 2007 11:22:23 -0000 1.10 @@ -1,4 +1,4 @@ -/* $Cambridge: exim/exim-src/src/routers/rf_lookup_hostlist.c,v 1.9 2007/03/13 15:32:48 ph10 Exp $ */ +/* $Cambridge: exim/exim-src/src/routers/rf_lookup_hostlist.c,v 1.10 2007/03/14 11:22:23 ph10 Exp $ */
/************************************************* * Exim - an Internet mail transport agent * @@ -64,13 +64,13 @@ "self" option in the configuration. */
prev = NULL; -for (h = addr->host_list; h != NULL; prev = h, h = next_h) +for (h = addr->host_list; h != NULL; h = next_h) { uschar *canonical_name; int rc, len, port;
next_h = h->next; - if (h->address != NULL) continue; + if (h->address != NULL) { prev = h; continue; }
DEBUG(D_route|D_host_lookup) debug_printf("finding IP address for %s\n", h->name); @@ -160,8 +160,7 @@ if (hff_code == hff_ignore) { if (prev == NULL) addr->host_list = next_h; else prev->next = next_h; - h = prev; /* Because the loop sets prev to h */ - continue; /* With the next host */ + continue; /* With the next host, leave prev unchanged */ }
if (hff_code == hff_pass) return PASS; @@ -213,6 +212,12 @@ } self_send = TRUE; } + + /* Ensure that prev is the host before next_h; this will not be h if a lookup + found multiple addresses or multiple MX records. */ + + prev = h; + while (prev->next != next_h) prev = prev->next; }
Index: db.test.ex =================================================================== RCS file: /home/cvs/exim/exim-test/dnszones-src/db.test.ex,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- db.test.ex 3 Oct 2006 15:11:22 -0000 1.5 +++ db.test.ex 14 Mar 2007 11:22:23 -0000 1.6 @@ -1,4 +1,4 @@ -; $Cambridge: exim/exim-test/dnszones-src/db.test.ex,v 1.5 2006/10/03 15:11:22 ph10 Exp $ +; $Cambridge: exim/exim-test/dnszones-src/db.test.ex,v 1.6 2007/03/14 11:22:23 ph10 Exp $
; This is a testing zone file for use when testing DNS handling in Exim. This ; is a fake zone of no real use - hence no SOA record. The zone name is @@ -311,6 +311,11 @@ mxt14 MX 4 ten-5-6.test.ex. MX 5 ten-5.test.ex. MX 6 ten-6.test.ex. + +; Non-local hosts with different precedence + +mxt15 MX 10 ten-1.test.ex. + MX 20 ten-2.test.ex.
Index: 0430 =================================================================== RCS file: /home/cvs/exim/exim-test/scripts/0000-Basic/0430,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- 0430 7 Feb 2006 10:54:33 -0000 1.1 +++ 0430 14 Mar 2007 11:22:23 -0000 1.2 @@ -28,3 +28,5 @@ **** exim -DLIST=mxt11a.test.ex/MX:ten-6.test.ex -bt x@??? **** +exim -DLIST=mxt15.test.ex/MX:localhost.test.ex -bt x@??? +****
Index: 0430 =================================================================== RCS file: /home/cvs/exim/exim-test/stdout/0430,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- 0430 9 Oct 2006 14:38:57 -0000 1.4 +++ 0430 14 Mar 2007 11:22:23 -0000 1.5 @@ -55,3 +55,7 @@ router = r2, transport = t1 host ten-6.test.ex [V4NET.0.0.6] host ten-1.test.ex [V4NET.0.0.1] MX=6 +x@??? + router = r1, transport = t1 + host ten-1.test.ex [V4NET.0.0.1] MX=10 + host ten-2.test.ex [V4NET.0.0.2] MX=20
Tahini and Hummus and Cumin Development Archives サイト管理人: cumin Admins | Lurker (バージョン 2.3) |