sendmail: don't add To: header if it already exists
authorAaro Koskinen <aaro.koskinen@iki.fi>
Sun, 24 Feb 2013 22:45:11 +0000 (00:45 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 18 Mar 2013 17:45:15 +0000 (18:45 +0100)
If the message we are sending already has To: header, don't add a new one.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
mailutils/sendmail.c

index 22f735b3d3fd90adcbe65bc714996b699e225e61..36a1b97cb8bcec5400fc0937108d6217cf468b94 100644 (file)
@@ -187,6 +187,7 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
                HDR_BCC,
        } last_hdr = 0;
        int check_hdr;
+       int has_to = 0;
 
        enum {
        //--- standard options
@@ -348,8 +349,10 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
 
                // analyze headers
                // To: or Cc: headers add recipients
+               check_hdr = 0 == strncasecmp("To:", s, 3);
+               has_to |= check_hdr;
                if (opts & OPT_t) {
-                       if (0 == strncasecmp("To:", s, 3) || 0 == strncasecmp("Bcc:" + 1, s, 3)) {
+                       if (check_hdr || 0 == strncasecmp("Bcc:" + 1, s, 3)) {
                                rcptto_list(s+3);
                                last_hdr = HDR_TOCC;
                                goto addheader;
@@ -391,7 +394,9 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
                                rcptto(t);
                                //if (MAX_HEADERS && ++nheaders >= MAX_HEADERS)
                                //      goto bail;
-                               llist_add_to_end(&list, xasprintf("To: %s", t));
+                               if (!has_to)
+                                       llist_add_to_end(&list,
+                                                       xasprintf("To: %s", t));
                                argv++;
                        }
                        // enter "put message" mode