git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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 variable
This, 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.

Previous: Jari AaltoNext: Jari Aalto
Message 18 of 28 in “Do not strip empty lines / trailing spaces from a commit message template”
  1. Do not strip empty lines / trailing spaces from a commit message templateSebastian Schuberth, Mar 10, 2010
  2. Jeff KingMar 11, 2010
  3. Jeff KingMar 11, 2010
  4. Junio C HamanoMar 11, 2010
  5. Jeff KingMar 11, 2010
  6. Junio C HamanoMar 12, 2010
  7. Sebastian SchuberthMar 12, 2010
  8. Junio C HamanoMar 12, 2010
  9. git-send-email.perl - Fix 550 EHLO argument does not match calling hostJari Aalto, Mar 13, 2010
  10. Junio C HamanoMar 13, 2010
  11. git-send-email.perl - Fix 550 EHLO argument does not match calling hostJari Aalto, Mar 13, 2010
  12. Junio C HamanoMar 14, 2010
  13. Jari AaltoMar 14, 2010
  14. Junio C HamanoMar 14, 2010
  15. Jari AaltoMar 14, 2010
  16. Jari AaltoMar 14, 2010
  17. git-send-email.perl - Fix 550 EHLO argument does not match calling hostJari Aalto, Mar 14, 2010
  18. Junio C HamanoMar 14, 2010
  19. Jari AaltoMar 14, 2010
  20. Jari AaltoMar 14, 2010
  21. Jakub NarebskiMar 14, 2010
  22. Jari AaltoMar 14, 2010
  23. 1/3 git-send-email.perl: improve error message in send_message()Jari Aalto, Mar 14, 2010
  24. 2/3 git-send-email.perl: add option --smtp-debugJari Aalto, Mar 14, 2010
  25. 3/3 git-send-email.perl - Fix 550 EHLO argument does not match calling hostJari Aalto, Mar 14, 2010
  26. Jakub NarebskiMar 14, 2010
  27. Jari AaltoMar 14, 2010
  28. git-send-email.perl - Fix 550 EHLO argument does not match calling hostJari Aalto, Mar 14, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.