send-email: Don't use FQDNs without a '.'

Although Net::Domain::domainname attempts to be very thorough, the
host's configuration can still refuse to give a FQDN.  Check to see if
what we receive contains a dot as a basic sanity check.

Since the same condition is used twice and getting complex, let's move
it to a new function.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Brian Gernhardt 2010-04-10 10:53:54 -04:00 committed by Junio C Hamano
parent 68ce93307f
commit 59a8630338

View File

@ -852,13 +852,17 @@ sub sanitize_address {
# This maildomain*() code is based on ideas in Perl library Test::Reporter # This maildomain*() code is based on ideas in Perl library Test::Reporter
# /usr/share/perl5/Test/Reporter/Mail/Util.pm ==> sub _maildomain () # /usr/share/perl5/Test/Reporter/Mail/Util.pm ==> sub _maildomain ()
sub valid_fqdn {
my $domain = shift;
return !($^O eq 'darwin' && $domain =~ /\.local$/) && $domain =~ /\./;
}
sub maildomain_net { sub maildomain_net {
my $maildomain; my $maildomain;
if (eval { require Net::Domain; 1 }) { if (eval { require Net::Domain; 1 }) {
my $domain = Net::Domain::domainname(); my $domain = Net::Domain::domainname();
$maildomain = $domain $maildomain = $domain if valid_fqdn($domain);
unless $^O eq 'darwin' && $domain =~ /\.local$/;
} }
return $maildomain; return $maildomain;
@ -874,8 +878,7 @@ sub maildomain_mta {
my $domain = $smtp->domain; my $domain = $smtp->domain;
$smtp->quit; $smtp->quit;
$maildomain = $domain $maildomain = $domain if valid_fqdn($domain);
unless $^O eq 'darwin' && $domain =~ /\.local$/;
last if $maildomain; last if $maildomain;
} }