changeset 22167:15ca457e629d

lib-mail: message_address_write() - Write empy username as "" We can't output <@domain> because that conflicts with the <@route:...> syntax. Also ""@domain seems to be a valid address.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Wed, 07 Jun 2017 12:42:28 +0300
parents 0e46fc927c94
children fb24444dd968
files src/lib-mail/message-address.c src/lib-mail/test-message-address.c
diffstat 2 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/message-address.c	Wed Jun 07 12:37:09 2017 +0300
+++ b/src/lib-mail/message-address.c	Wed Jun 07 12:42:28 2017 +0300
@@ -468,7 +468,10 @@
 					str_append(str, addr->route);
 					str_append_c(str, ':');
 				}
-				str_append_maybe_escape(str, addr->mailbox, FALSE);
+				if (addr->mailbox[0] == '\0')
+					str_append(str, "\"\"");
+				else
+					str_append_maybe_escape(str, addr->mailbox, FALSE);
 				if (addr->domain[0] != '\0') {
 					str_append_c(str, '@');
 					str_append(str, addr->domain);
--- a/src/lib-mail/test-message-address.c	Wed Jun 07 12:37:09 2017 +0300
+++ b/src/lib-mail/test-message-address.c	Wed Jun 07 12:42:28 2017 +0300
@@ -26,6 +26,8 @@
 		  { NULL, NULL, NULL, "user", "domain", FALSE } },
 		{ "<user@domain>", NULL,
 		  { NULL, NULL, NULL, "user", "domain", FALSE } },
+		{ "<\"\"@domain>", "<\"\"@domain>",
+		  { NULL, NULL, NULL, "", "domain", FALSE } },
 		{ "foo bar <user@domain>", "\"foo bar\" <user@domain>",
 		  { NULL, "foo bar", NULL, "user", "domain", FALSE } },
 		{ "\"foo bar\" <user@domain>", NULL,
@@ -44,7 +46,7 @@
 		  { NULL, "hello", NULL, "user", "", TRUE } },
 		{ "hello <user>", "hello <user>",
 		  { NULL, "hello", NULL, "user", "", TRUE } },
-		{ "@domain", "<@domain>",
+		{ "@domain", "<\"\"@domain>",
 		  { NULL, NULL, NULL, "", "domain", TRUE } },
 	};
 	static struct message_address group_prefix = {