Sync 4.next from master
[exim.git] / src / src / daemon.c
index 6e904e1f95306c6a164753b85994ab7885d77f76..ebd06b523114f09c847d23fce968674a292d3193 100644 (file)
@@ -542,9 +542,9 @@ if (pid == 0)
     DEBUG(D_receive)
       {
       int i;
-      if (sender_address != NULL)
+      if (sender_address)
         debug_printf("Sender: %s\n", sender_address);
-      if (recipients_list != NULL)
+      if (recipients_list)
         {
         debug_printf("Recipients:\n");
         for (i = 0; i < recipients_count; i++)
@@ -564,6 +564,17 @@ if (pid == 0)
 
     /* Reclaim up the store used in accepting this message */
 
+    return_path = sender_address = NULL;
+    authenticated_sender = NULL;
+    sending_ip_address = NULL;
+    deliver_host_address = deliver_host =
+    deliver_domain_orig = deliver_localpart_orig = NULL;
+    dnslist_domain = dnslist_matched = NULL;
+    callout_address = NULL;
+#ifndef DISABLE_DKIM
+    dkim_cur_signer = NULL;
+#endif
+    acl_var_m = NULL;
     store_reset(reset_point);
 
     /* If queue_only is set or if there are too many incoming connections in
@@ -734,6 +745,8 @@ else (void)close(dup_accept_socket);
 the incoming host address and an expanded active_hostname. */
 
 log_close_all();
+interface_address =
+sender_host_address = NULL;
 store_reset(reset_point);
 sender_host_address = NULL;
 }
@@ -1674,6 +1687,16 @@ else if (daemon_listen)
            }
          else if (ipa->address[0] == 0)
            (void)sprintf(CS p, " port %d (IPv4)", ipa->port);
+         else if (  i > 0
+                 && host_is_tls_on_connect_port(ipa[-1].port) == (j > 0)
+                 && Ustrcmp(ipa->address, ipa[-1].address) == 0
+                 )
+           {
+           if (p[-1] == '}') p--;
+           while (isdigit(*--p)) ;
+           (void)sprintf(CS p+1, "%s%d,%d}", *p == ',' ? "" : "{",
+             ipa[-1].port, ipa->port);
+           }
          else
            (void)sprintf(CS p, " [%s]:%d", ipa->address, ipa->port);
          while (*p != 0) p++;