From e6532c4a78619d4ea45b6e95b738189eebf8859a Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sat, 24 Feb 2018 20:04:25 +0000 Subject: [PATCH] I18N: Fix utf8_downconvert propagation through a redirect router --- doc/doc-txt/ChangeLog | 3 +++ src/src/routers/redirect.c | 11 ++++++----- test/confs/4201 | 5 +++++ test/log/4207 | 6 ++++++ test/scripts/4200-International/4207 | 15 ++++++++++++++- test/stdout/4207 | 12 ++++++++++++ 6 files changed, 46 insertions(+), 6 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index d672ee720..0b8e51658 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -120,6 +120,9 @@ JH/23 Fix memory leak during multi-message connections using STARTTLS under JH/24 Bug 2242: Fix exim_dbmbuild to permit directoryless filenames. +JH/25 Fix utf8_downconvert propagation through a redirect router. Previously it + was not propagated. + Exim version 4.90 ----------------- diff --git a/src/src/routers/redirect.c b/src/src/routers/redirect.c index b69ba535f..944fb6743 100644 --- a/src/src/routers/redirect.c +++ b/src/src/routers/redirect.c @@ -465,8 +465,9 @@ while (generated) } #ifdef SUPPORT_I18N - next->prop.utf8_msg = string_is_utf8(next->address) - || (sender_address && string_is_utf8(sender_address)); + if (!next->prop.utf8_msg) + next->prop.utf8_msg = string_is_utf8(next->address) + || (sender_address && string_is_utf8(sender_address)); #endif DEBUG(D_route) @@ -567,9 +568,9 @@ addr_prop.remove_headers = NULL; addr_prop.srs_sender = NULL; #endif #ifdef SUPPORT_I18N -addr_prop.utf8_msg = FALSE; /*XXX should we not copy this from the parent? */ -addr_prop.utf8_downcvt = FALSE; -addr_prop.utf8_downcvt_maybe = FALSE; +addr_prop.utf8_msg = addr->prop.utf8_msg; +addr_prop.utf8_downcvt = addr->prop.utf8_downcvt; +addr_prop.utf8_downcvt_maybe = addr->prop.utf8_downcvt_maybe; #endif diff --git a/test/confs/4201 b/test/confs/4201 index e12e13828..9242eb063 100644 --- a/test/confs/4201 +++ b/test/confs/4201 @@ -93,6 +93,11 @@ bounces: data = DIR/test-mail/$local_part file_transport = local_delivery +redir: + driver = redirect + local_parts = ^z + data = ${substr_1:$local_part}@$domain + rmt: driver = manualroute domains = +local_domains diff --git a/test/log/4207 b/test/log/4207 index 797a2b909..e39c0f5fb 100644 --- a/test/log/4207 +++ b/test/log/4207 @@ -1,11 +1,17 @@ 1999-03-02 09:44:33 10HmaX-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for user.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex 1999-03-02 09:44:33 10HmaX-0005vi-00 => xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaY-0005vi-00" 1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for zuser.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 => xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed ******** SERVER ******** 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 1999-03-02 09:44:33 10HmaY-0005vi-00 <= xn--ihqwcrb4cv8a8dqg056pqjye@hebrew.xn--4dbcagdahymbxekheh6e0a7fei0b.com H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaX-0005vi-00@the.local.host.name for xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex +1999-03-02 09:44:33 10HmbA-0005vi-00 <= xn--ihqwcrb4cv8a8dqg056pqjye@hebrew.xn--4dbcagdahymbxekheh6e0a7fei0b.com H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaZ-0005vi-00@the.local.host.name for xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex 1999-03-02 09:44:33 Start queue run: pid=pppp -qqff 1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: R=localuser 1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed 1999-03-02 09:44:33 End queue run: pid=pppp -qqff diff --git a/test/scripts/4200-International/4207 b/test/scripts/4200-International/4207 index cbfa5cca3..061a2c6b3 100644 --- a/test/scripts/4200-International/4207 +++ b/test/scripts/4200-International/4207 @@ -1,7 +1,7 @@ # Internationalised mail: control = utf8_downconvert # Exim test configuration 4207 # -exim -DSERVER=server -bd -oX PORT_D +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D **** # # @@ -13,6 +13,19 @@ RCPT TO: SMTPUTF8 +RCPT TO: +DATA +Subject: test + body . QUIT diff --git a/test/stdout/4207 b/test/stdout/4207 index 94a4e18d7..948434ff3 100644 --- a/test/stdout/4207 +++ b/test/stdout/4207 @@ -10,3 +10,15 @@ 354 Enter message, ending with "." on a line by itself 250 OK id=10HmaX-0005vi-00 221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaZ-0005vi-00 +221 the.local.host.name closing connection -- 2.30.2