X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Frouters%2Fqueryprogram.c;h=45321338701da05652cc97081d9c467633aff8c3;hb=81344b40e3de597f60758926e5e1ae7a81dd5457;hp=5dac6580a9ba1aed4520fd3c27904312e787a928;hpb=cab0c27721a3c1f3a146e44bcc6462eefb9eb9e7;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/routers/queryprogram.c b/src/src/routers/queryprogram.c index 5dac6580a..453213387 100644 --- a/src/src/routers/queryprogram.c +++ b/src/src/routers/queryprogram.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2016 */ +/* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ #include "../exim.h" @@ -123,12 +123,14 @@ add_generated(router_instance *rblock, address_item **addr_new, { while (generated != NULL) { + BOOL ignore_error = addr->prop.ignore_error; address_item *next = generated; + generated = next->next; next->parent = addr; - orflag(next, addr, af_propagate); next->prop = *addr_prop; + next->prop.ignore_error = next->prop.ignore_error || ignore_error; next->start_router = rblock->redirect_router; next->next = *addr_new; @@ -230,6 +232,7 @@ errors address and extra header stuff. */ bzero(&addr_prop, sizeof(addr_prop)); addr_prop.address_data = deliver_address_data; +tree_dup((tree_node **)&addr_prop.variables, addr->prop.variables); rc = rf_get_errors_address(addr, rblock, verify, &addr_prop.errors_address); if (rc != OK) return rc; @@ -487,9 +490,9 @@ lookup_value = NULL; if (*s != 0) { transport_instance *transport; - for (transport = transports; transport != NULL; transport = transport->next) + for (transport = transports; transport; transport = transport->next) if (Ustrcmp(transport->name, s) == 0) break; - if (transport == NULL) + if (!transport) { addr->message = string_sprintf("unknown transport name %s yielded by " "command", s); @@ -518,14 +521,14 @@ s = expand_string(US"${extract{hosts}{$value}}"); if (*s != 0) { - int lookup_type = lk_default; + int lookup_type = LK_DEFAULT; uschar *ss = expand_string(US"${extract{lookup}{$value}}"); lookup_value = NULL; if (*ss != 0) { - if (Ustrcmp(ss, "byname") == 0) lookup_type = lk_byname; - else if (Ustrcmp(ss, "bydns") == 0) lookup_type = lk_bydns; + if (Ustrcmp(ss, "byname") == 0) lookup_type = LK_BYNAME; + else if (Ustrcmp(ss, "bydns") == 0) lookup_type = LK_BYDNS; else { addr->message = string_sprintf("bad lookup type \"%s\" yielded by "