Re: [PATCH] git-send-email.perl - Fix 550 EHLO argument does not match calling host

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jari Aalto <jari.aalto@xxxxxxxxx> writes:

> +sub maildomain_net
> +{
> +	my $maildomain;
> +	eval "use Net::Domain";
> +
> +	unless ($@) {
> +		eval "use Net::Domain";
> +		unless ($@) {

Sorry, but I don't understand the reason why you need to check the same
thing twice.  The original you borrowed from seems to be much cleanly
written; it essentially boils down to:

    if (eval "require Net::Domain") {
        my $domain = Net::Domain::Domainname();
        ...
    }

without need for separate "unless ($@)", nor doubly nested construct.

> +{
> +    my $mail_domain_system;		# Static variable

This, and ...


> @@ -917,6 +988,8 @@ X-Mailer: git-send-email $gitversion
>  		}
>  	}
>  
> +	my $maildomain;
> +

... this, I still don't see the point of them.

> @@ -962,9 +1040,10 @@ X-Mailer: git-send-email $gitversion
>  		}
>  
>  		if (!$smtp) {
> -			die "Unable to initialize SMTP properly. Check config. ",
> +			die "Unable to initialize SMTP properly. Check config and use --smtp-debug. ",
>  			    "VALUES: server=$smtp_server ",
>  			    "encryption=$smtp_encryption ",
> +			    "maildomain=$maildomain",

You said you needed a separate local variable for reporting but that
doesn't explain why you need three redundant variables.  Why can't the
code look like this?

-- >8 -- snip -- >8 --
my $mail_domain; # toplevel global

GetOptions(...,
           "smtp-domain=s" => \$mail_domain,
           ...);

sub maildomain {
	maindomain_net() || maildomain_mta() || "localhost.localdomain";
}

sub send_message {
	...
        $mail_domain ||= maildomain();
        if (ssl) {
        	$smtp ||= Net::SMTP::SSL->new(...);
	} else {
        	$smtp || Net::SMTL->new(...);
	}
	...
        if (!$smtp) {
        	die "Unable to... your maildomain is set to $mail_domain";
	}
}
-- 8< -- snap -- 8< --

That is:

 - $mail_domain can be set from the command line;
 - once set, ||= ensures that it will we used without needing to
   call maildomain();
 - the value you used unsuccessfully to obtain $smtp is reported.

which seems to be more in line with the way how existing code avoids
resetting $smtp once it gets a working one.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]