Re: [PATCH] git-send-email.perl - Fix 550 EHLO argument does not match calling host
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 14, 2010, 11:55 UTC
- Message-ID
- <7vljdvp16n.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <878w9vdx01.fsf@jondo.cante.net>
Jari Aalto <jari.aalto@cante.net> writes:
Show 8 quoted lines
> +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 variableThis, and ...
Show 6 quoted lines
> @@ -917,6 +988,8 @@ X-Mailer: git-send-email $gitversion > } > } > > + my $maildomain; > +
... this, I still don't see the point of them.
Show 9 quoted lines
> @@ -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.