diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2011-09-29 19:02:45 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-09-29 11:16:33 -0700 |
commit | ccdbdc79a30413d93d32cc7e5293185228f05459 (patch) | |
tree | febea76be81b171a4cfce76077d671056b9b7e38 | |
parent | Git 1.7.4 (diff) | |
download | tgif-ccdbdc79a30413d93d32cc7e5293185228f05459.tar.xz |
send-email: auth plain/login fix
git send-email was not authenticating properly when communicating over
TLS with a server supporting only AUTH PLAIN and AUTH LOGIN. This is
e.g. the standard server setup under debian with exim4 and probably
everywhere where system accounts are used.
The problem (only?) exists when libauthen-sasl-cyrus-perl
(Authen::SASL::Cyrus) is installed. Importing Authen::SASL::Perl
makes Authen::SASL use the perl implementation which works
better.
The solution is based on this forum thread:
http://www.perlmonks.org/?node_id=904354.
This patch is tested by sending it. Without this fix, the interaction with
the server failed like this:
$ git send-email --smtp-encryption=tls --smtp-server=... --smtp-debug=1 change1.patch
...
Net::SMTP::SSL=GLOB(0x238f668)<<< 250-AUTH LOGIN PLAIN
Password:
Net::SMTP::SSL=GLOB(0x238f668)>>> AUTH
Net::SMTP::SSL=GLOB(0x238f668)<<< 501 5.5.2 AUTH mechanism must be specified
5.5.2 AUTH mechanism must be specified
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-send-email.perl | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index 76565de2ee..261200618d 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1095,6 +1095,12 @@ X-Mailer: git-send-email $gitversion } if (defined $smtp_authuser) { + # Workaround AUTH PLAIN/LOGIN interaction defect + # with Authen::SASL::Cyrus + eval { + require Authen::SASL; + Authen::SASL->import(qw(Perl)); + }; if (!defined $smtp_authpass) { |