Skip to content

Commit

Permalink
Merge branch 'mt/send-email-cc-match-fix'
Browse files Browse the repository at this point in the history
Logic used by git-send-email to suppress cc mishandled names that
need RFC2047 quoting.

* mt/send-email-cc-match-fix:
  send-email: sanitize author when writing From line
  send-email: add test for duplicate utf8 name
  • Loading branch information
Junio C Hamano committed Jun 27, 2013
2 parents 833cd7f + 4cb46bd commit b29dc5c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
5 changes: 3 additions & 2 deletions git-send-email.perl
Original file line number Diff line number Diff line change
Expand Up @@ -1259,6 +1259,7 @@ sub send_message {
open my $fh, "<", $t or die "can't open file $t";

my $author = undef;
my $sauthor = undef;
my $author_encoding;
my $has_content_type;
my $body_encoding;
Expand Down Expand Up @@ -1297,7 +1298,7 @@ sub send_message {
}
elsif (/^From:\s+(.*)$/i) {
($author, $author_encoding) = unquote_rfc2047($1);
my $sauthor = sanitize_address($author);
$sauthor = sanitize_address($author);
next if $suppress_cc{'author'};
next if $suppress_cc{'self'} and $sauthor eq $sender;
printf("(mbox) Adding cc: %s from line '%s'\n",
Expand Down Expand Up @@ -1393,7 +1394,7 @@ sub send_message {
$subject = quote_subject($subject, $auto_8bit_encoding);
}

if (defined $author and $author ne $sender) {
if (defined $sauthor and $sauthor ne $sender) {
$message = "From: $author\n\n$message";
if (defined $author_encoding) {
if ($has_content_type) {
Expand Down
14 changes: 14 additions & 0 deletions t/t9001-send-email.sh
Original file line number Diff line number Diff line change
Expand Up @@ -956,6 +956,20 @@ test_expect_success $PREREQ 'utf8 author is correctly passed on' '
grep "^From: Füñný Nâmé <odd_?=mail@example.com>" msgtxt1
'

test_expect_success $PREREQ 'utf8 sender is not duplicated' '
clean_fake_sendmail &&
test_commit weird_sender &&
test_when_finished "git reset --hard HEAD^" &&
git commit --amend --author "Füñný Nâmé <odd_?=mail@example.com>" &&
git format-patch --stdout -1 >funny_name.patch &&
git send-email --from="Füñný Nâmé <odd_?=mail@example.com>" \
--to=nobody@example.com \
--smtp-server="$(pwd)/fake.sendmail" \
funny_name.patch &&
grep "^From: " msgtxt1 >msgfrom &&
test_line_count = 1 msgfrom
'

test_expect_success $PREREQ 'sendemail.composeencoding works' '
clean_fake_sendmail &&
git config sendemail.composeencoding iso-8859-1 &&
Expand Down

0 comments on commit b29dc5c

Please sign in to comment.