Code

send-email: Don't use FQDNs without a '.'
authorBrian Gernhardt <brian@gernhardtsoftware.com>
Sat, 10 Apr 2010 14:53:54 +0000 (10:53 -0400)
committerJunio C Hamano <gitster@pobox.com>
Sat, 10 Apr 2010 20:01:20 +0000 (13:01 -0700)
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>
git-send-email.perl

index f8d86ea9a28aa0ae7d8b29ac87d48486cc9f441d..df83f0aa1060ff57e71ae84fbc0eb29a510effa4 100755 (executable)
@@ -852,13 +852,17 @@ sub sanitize_address {
 # This maildomain*() code is based on ideas in Perl library Test::Reporter
 # /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 {
        my $maildomain;
 
        if (eval { require Net::Domain; 1 }) {
                my $domain = Net::Domain::domainname();
-               $maildomain = $domain
-                       unless $^O eq 'darwin' && $domain =~ /\.local$/;
+               $maildomain = $domain if valid_fqdn($domain);
        }
 
        return $maildomain;
@@ -874,8 +878,7 @@ sub maildomain_mta {
                                my $domain = $smtp->domain;
                                $smtp->quit;
 
-                               $maildomain = $domain
-                                       unless $^O eq 'darwin' && $domain =~ /\.local$/;
+                               $maildomain = $domain if valid_fqdn($domain);
 
                                last if $maildomain;
                        }