constification
[exim.git] / src / src / deliver.c
index 52270368ee3b7fc4eaacd991a303529772e2ce0f..9d459167e68b32b90517e0c88221c4ea0fc9a8bd 100644 (file)
@@ -5743,7 +5743,7 @@ wording. */
 
     if (addr->return_file >= 0)
       {
-      paddr = &(addr->next);
+      paddr = &addr->next;
       filecount++;
       }
 
@@ -5850,6 +5850,9 @@ wording. */
   for (address_item * addr = handled_addr; addr; addr = addr->next)
     {
     host_item * hu;
+#ifdef EXPERIMENTAL_DSN_INFO
+    const uschar * s;
+#endif
 
     print_dsn_addr_action(fp, addr, US"failed", US"5.0.0");
 
@@ -5857,8 +5860,6 @@ wording. */
       {
       fprintf(fp, "Remote-MTA: dns; %s\n", hu->name);
 #ifdef EXPERIMENTAL_DSN_INFO
-      {
-      const uschar * s;
       if (hu->address)
        {
        uschar * p = hu->port == 25
@@ -5869,12 +5870,15 @@ wording. */
        dsn_put_wrapped(fp, US"X-Remote-MTA-smtp-greeting: X-str; ", s);
       if ((s = addr->helo_response) && *s)
        dsn_put_wrapped(fp, US"X-Remote-MTA-helo-response: X-str; ", s);
-      if ((s = addr->message) && *s)
+      if (testflag(addr, af_pass_message) && (s = addr->message) && *s)
        dsn_put_wrapped(fp, US"X-Exim-Diagnostic: X-str; ", s);
-      }
 #endif
       print_dsn_diagnostic_code(addr, fp);
       }
+#ifdef EXPERIMENTAL_DSN_INFO
+      else if (testflag(addr, af_pass_message) && (s = addr->message) && *s)
+       dsn_put_wrapped(fp, US"X-Exim-Diagnostic: X-str; ", s);
+#endif
     fputc('\n', fp);
     }
 
@@ -6193,11 +6197,11 @@ return child_close(pid, 0) == 0;
 *************************************************/
 
 static void
-maybe_send_dsn(void)
+maybe_send_dsn(const address_item * const addr_succeed)
 {
 address_item * addr_senddsn = NULL;
 
-for (address_item * a = addr_succeed; a; a = a->next)
+for (const address_item * a = addr_succeed; a; a = a->next)
   {
   /* af_ignore_error not honored here. it's not an error */
   DEBUG(D_deliver) debug_printf("DSN: processing router : %s\n"
@@ -6384,7 +6388,7 @@ Returns:      When the global variable mua_wrapper is FALSE:
 */
 
 int
-deliver_message(uschar * id, BOOL forced, BOOL give_up)
+deliver_message(const uschar * id, BOOL forced, BOOL give_up)
 {
 int i, rc;
 int final_yield = DELIVER_ATTEMPTED_NORMAL;
@@ -7009,8 +7013,9 @@ if (process_recipients != RECIP_IGNORE)
   for (i = 0; i < recipients_count; i++)
     if (!tree_search(tree_nonrecipients, recipients_list[i].address))
       {
-      recipient_item *r = recipients_list + i;
-      address_item *new = deliver_make_addr(r->address, FALSE);
+      recipient_item * r = recipients_list + i;
+      address_item * new = deliver_make_addr(r->address, FALSE);
+
       new->prop.errors_address = r->errors_to;
 #ifdef SUPPORT_I18N
       if ((new->prop.utf8_msg = message_smtputf8))
@@ -7070,6 +7075,8 @@ if (process_recipients != RECIP_IGNORE)
 
         case RECIP_FAIL:
          new->message  = US"delivery cancelled by administrator";
+         /* not setting af_pass_message here means that will not
+         appear in the bounce message */
          /* Fall through */
 
         /* Common code for the failure cases above. If this is not a bounce
@@ -7078,7 +7085,7 @@ if (process_recipients != RECIP_IGNORE)
         The incident has already been logged. */
 
         RECIP_QUEUE_FAILED:
-         if (sender_address[0])
+         if (*sender_address)
            {
            new->next = addr_failed;
            addr_failed = new;
@@ -8136,7 +8143,7 @@ else if (!f.dont_deliver)
 
 /* Send DSN for successful messages if requested */
 
-maybe_send_dsn();
+maybe_send_dsn(addr_succeed);
 
 /* If any addresses failed, we must send a message to somebody, unless
 af_ignore_error is set, in which case no action is taken. It is possible for