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:
parent
68ce93307f
commit
59a8630338
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user