diff options
author | Philip Hazel <ph10@hermes.cam.ac.uk> | 2006-03-09 15:10:16 +0000 |
---|---|---|
committer | Philip Hazel <ph10@hermes.cam.ac.uk> | 2006-03-09 15:10:16 +0000 |
commit | e97957bc478f60d32649b329659d4b72748745c1 (patch) | |
tree | 6d852c18138fc8ef147b98e94b1c2b61fbdb43d3 /src/src/retry.c | |
parent | 462182534289f0484d05688616f39943abd2f9a4 (diff) | |
download | exim4-e97957bc478f60d32649b329659d4b72748745c1.tar.gz |
Add new errors mail_4xx, data_4xx, lost_connection, tls_required.
Diffstat (limited to 'src/src/retry.c')
-rw-r--r-- | src/src/retry.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/src/retry.c b/src/src/retry.c index dbfd3cee8..ca61e5c0c 100644 --- a/src/src/retry.c +++ b/src/src/retry.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/retry.c,v 1.8 2006/02/16 16:37:57 ph10 Exp $ */ +/* $Cambridge: exim/src/src/retry.c,v 1.9 2006/03/09 15:10:16 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -414,20 +414,31 @@ for (yield = retries; yield != NULL; yield = yield->next) continue; } - /* Handle 4xx responses to RCPT. The code that was received is in the 2nd - least significant byte of more_errno (with 400 subtracted). The required - value is coded in the 2nd least significant byte of the yield->more_errno - field as follows: + /* The TLSREQUIRED error also covers TLSFAILURE. These are subtly different + errors, but not worth separating at this level. */ + + else if (yield->basic_errno == ERRNO_TLSREQUIRED) + { + if (basic_errno != ERRNO_TLSREQUIRED && basic_errno != ERRNO_TLSFAILURE) + continue; + } + + /* Handle 4xx responses to MAIL, RCPT, or DATA. The code that was received + is in the 2nd least significant byte of more_errno (with 400 subtracted). + The required value is coded in the 2nd least significant byte of the + yield->more_errno field as follows: 255 => any 4xx code >= 100 => the decade must match the value less 100 < 100 => the exact value must match */ - else if (yield->basic_errno == ERRNO_RCPT4XX) + else if (yield->basic_errno == ERRNO_MAIL4XX || + yield->basic_errno == ERRNO_RCPT4XX || + yield->basic_errno == ERRNO_DATA4XX) { int wanted; - if (basic_errno != ERRNO_RCPT4XX) continue; + if (basic_errno != yield->basic_errno) continue; wanted = (yield->more_errno >> 8) & 255; if (wanted != 255) { |