svn commit: trunk/busybox/networking

vda at busybox.net vda at busybox.net
Wed Jul 16 21:55:04 UTC 2008


Author: vda
Date: 2008-07-16 14:55:03 -0700 (Wed, 16 Jul 2008)
New Revision: 22847

Log:
sendmail: do not discard all headers



Modified:
   trunk/busybox/networking/sendmail.c


Changeset:
Modified: trunk/busybox/networking/sendmail.c
===================================================================
--- trunk/busybox/networking/sendmail.c	2008-07-16 21:51:43 UTC (rev 22846)
+++ trunk/busybox/networking/sendmail.c	2008-07-16 21:55:03 UTC (rev 22847)
@@ -375,6 +375,7 @@
 		const char *p;
 		char *q;
 		llist_t *l;
+		llist_t *headers = NULL;
 
 		// recipients specified as arguments
 		while (*argv) {
@@ -390,6 +391,7 @@
 		// N.B. subject read from body has priority
 		// over that specified on command line.
 		// recipients are merged
+		// N.B. other headers are collected and will be dumped verbatim
 		if (opts & OPTS_t || !opt_recipients) {
 			// fetch recipients and (optionally) subject
 			char *s;
@@ -402,11 +404,12 @@
 */				} else if (0 == strncmp("Subject: ", s, 9)) {
 					opt_subject = s+9;
 					opts |= OPTS_s;
+				} else if (s[0]) {
+					// misc header
+					llist_add_to_end(&headers, s);
 				} else {
-					char first = s[0];
 					free(s);
-					if (!first)
-						break; // empty line
+					break; // empty line
 				}
 			}
 		}
@@ -476,6 +479,11 @@
 		if (opts & OPTS_N)
 			printf("Disposition-Notification-To: %s\r\n", opt_from);
 
+		// put headers we could have preread with -t
+		for (l = headers; l; l = l->link) {
+			printf("%s\r\n", l->data);
+		}
+
 		// make a random string -- it will delimit message parts
 		srand(monotonic_us());
 		boundary = xasprintf("%d-%d-%d", rand(), rand(), rand());




More information about the busybox-cvs mailing list