diff options
author | Shawn O. Pearce <sop@google.com> | 2009-06-18 17:40:34 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2009-06-18 17:40:34 -0700 |
commit | 1c2b4a05a4fbb779767ebf0b9cd8cff23d4ff5a8 (patch) | |
tree | 41b1899a6df0fcee22fe842231a1e2f7a2ba88b5 | |
parent | 6c775e508910c4c0d449d49d89f3054988a1172d (diff) |
Fix line-wrapped To/CC email headers
We incorrectly skipped a comma when we line wrapped a To or CC header
onto the next line and we packed multiple addresses on the subsequent
line. This caused email clients to assume the two addresses were in
reality one address, breaking filter rules and reply-to-all behavior.
Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r-- | src/main/java/com/google/gerrit/server/mail/EmailHeader.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/main/java/com/google/gerrit/server/mail/EmailHeader.java b/src/main/java/com/google/gerrit/server/mail/EmailHeader.java index 2d82c1d1c1..36a5f37c2f 100644 --- a/src/main/java/com/google/gerrit/server/mail/EmailHeader.java +++ b/src/main/java/com/google/gerrit/server/mail/EmailHeader.java @@ -87,20 +87,24 @@ abstract class EmailHeader { @Override void write(Writer w) throws IOException { int len = 8; - boolean first = true; + boolean firstAddress = true; + boolean needComma = false; for (final Address addr : list) { java.lang.String s = addr.toHeaderString(); - if (first) { - first = false; + if (firstAddress) { + firstAddress = false; } else if (72 < len + s.length()) { w.write(",\r\n\t"); len = 8; - first = true; - } else { + needComma = false; + } + + if (needComma) { w.write(", "); } w.write(s); len += s.length(); + needComma = true; } } } |