X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/9242a7e8cfa94bbc9dd7eca6bd651b569b871c4e..90bd3832bc0ff090ac5e37dfc66b30cabb9cfc1a:/src/src/routers/rf_get_errors_address.c diff --git a/src/src/routers/rf_get_errors_address.c b/src/src/routers/rf_get_errors_address.c index 46562a704..792b9b5f3 100644 --- a/src/src/routers/rf_get_errors_address.c +++ b/src/src/routers/rf_get_errors_address.c @@ -2,8 +2,10 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2017 */ +/* Copyright (c) University of Cambridge 1995 - 2018 */ +/* Copyright (c) The Exim Maintainers 2020 */ /* See the file NOTICE for conditions of use and distribution. */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ #include "../exim.h" #include "rf_functions.h" @@ -33,19 +35,18 @@ Returns: OK if no problem */ int -rf_get_errors_address(address_item *addr, router_instance *rblock, - int verify, uschar **errors_to) +rf_get_errors_address(address_item * addr, router_instance * rblock, + int verify, const uschar ** errors_to) { -uschar *s; +uschar * s; *errors_to = addr->prop.errors_address; -if (rblock->errors_to == NULL) return OK; +if (!rblock->errors_to) return OK; -s = expand_string(rblock->errors_to); - -if (s == NULL) +GET_OPTION("errors_to"); +if (!(s = expand_string(rblock->errors_to))) { - if (expand_string_forcedfail) + if (f.expand_string_forcedfail) { DEBUG(D_route) debug_printf("forced expansion failure - ignoring errors_to\n"); @@ -58,7 +59,7 @@ if (s == NULL) /* If the errors_to address is empty, it means "ignore errors" */ -if (*s == 0) +if (!*s) { addr->prop.ignore_error = TRUE; /* For locally detected errors */ *errors_to = US""; /* Return path for SMTP */ @@ -81,22 +82,19 @@ if (verify != v_none) } else { - BOOL save_address_test_mode = address_test_mode; - int save1 = 0; + BOOL save_address_test_mode = f.address_test_mode; + const uschar * save_sender = sender_address; int i; const uschar ***p; const uschar *address_expansions_save[ADDRESS_EXPANSIONS_COUNT]; address_item *snew = deliver_make_addr(s, FALSE); - if (sender_address != NULL) - { - save1 = sender_address[0]; - sender_address[0] = 0; - } + if (sender_address) + sender_address = US""; - for (i = 0, p = address_expansions; *p != NULL;) + for (i = 0, p = address_expansions; *p;) address_expansions_save[i++] = **p++; - address_test_mode = FALSE; + f.address_test_mode = FALSE; /* NOTE: the address is verified as a recipient, not a sender. This is perhaps confusing. It isn't immediately obvious what to do: we want to have @@ -118,11 +116,11 @@ else DEBUG(D_route|D_verify) debug_printf("------ End verifying errors address %s ------\n", s); - address_test_mode = save_address_test_mode; - for (i = 0, p = address_expansions; *p != NULL;) + f.address_test_mode = save_address_test_mode; + for (i = 0, p = address_expansions; *p; ) **p++ = address_expansions_save[i++]; - if (sender_address != NULL) sender_address[0] = save1; + sender_address = save_sender; } return OK;