Restrict lifetime of $router_name and $transport_name. Bug 308.
[exim.git] / src / src / deliver.c
index 55bfa0dd0839fe2b539623d026985ab280c03ae2..e2605ab2cf9453783bc1e50c3b26f5023d8f1126 100644 (file)
@@ -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 */