diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/src/deliver.c | 11 | ||||
-rw-r--r-- | src/src/route.c | 7 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/src/deliver.c b/src/src/deliver.c index 55bfa0dd0..e2605ab2c 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -1871,6 +1871,9 @@ if ((pid = fork()) == 0) set_process_info("delivering %s to %s using %s", message_id, addr->local_part, addr->transport->name); + /* Setting this global in the subprocess means we need never clear it */ + transport_name = addr->transport->name; + /* If a transport filter has been specified, set up its argument list. Any errors will get put into the address, and FALSE yielded. */ @@ -2190,8 +2193,6 @@ while (addr_local != NULL) if (previously_transported(addr, FALSE)) continue; - transport_name = tp->name; - /* There are weird cases where logging is disabled */ disable_logging = tp->disable_logging; @@ -3532,8 +3533,6 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++) if (previously_transported(addr, FALSE)) continue; - transport_name = tp->name; - /* Force failure if the message is too big. */ if (tp->message_size_limit != NULL) @@ -3859,8 +3858,10 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++) int fd = pfd[pipe_write]; host_item *h; - /* There are weird circumstances in which logging is disabled */ + /* Setting this global in the subprocess means we need never clear it */ + transport_name = tp->name; + /* There are weird circumstances in which logging is disabled */ disable_logging = tp->disable_logging; /* Show pids on debug output if parallelism possible */ diff --git a/src/src/route.c b/src/src/route.c index f8bacf11b..2fee38271 100644 --- a/src/src/route.c +++ b/src/src/route.c @@ -1512,7 +1512,6 @@ for (r = (addr->start_router == NULL)? routers : addr->start_router; int rc; DEBUG(D_route) debug_printf("--------> %s router <--------\n", r->name); - router_name = r->name; /* Reset any search error message from the previous router. */ @@ -1634,6 +1633,7 @@ for (r = (addr->start_router == NULL)? routers : addr->start_router; /* Set the expansion variables now that we have the affixes and the case of the local part sorted. */ + router_name = r->name; deliver_set_expansions(addr); /* For convenience, the pre-router checks are in a separate function, which @@ -1641,6 +1641,7 @@ for (r = (addr->start_router == NULL)? routers : addr->start_router; if ((rc = check_router_conditions(r, addr, verify, &pw, &error)) != OK) { + router_name = NULL; if (rc == SKIP) continue; addr->message = error; yield = rc; @@ -1679,6 +1680,7 @@ for (r = (addr->start_router == NULL)? routers : addr->start_router; { DEBUG(D_route) debug_printf("\"more\"=false: skipping remaining routers\n"); + router_name = NULL; r = NULL; break; } @@ -1722,6 +1724,8 @@ for (r = (addr->start_router == NULL)? routers : addr->start_router; yield = (r->info->code)(r, addr, pw, verify, paddr_local, paddr_remote, addr_new, addr_succeed); + router_name = NULL; + if (yield == FAIL) { HDEBUG(D_route) debug_printf("%s router forced address failure\n", r->name); @@ -1968,6 +1972,7 @@ if (yield == DEFER) { } deliver_set_expansions(NULL); +router_name = NULL; disable_logging = FALSE; return yield; } |