From: Silvio F <[email protected]>
Signed-off-by: Silvio F <[email protected]>
---
Documentation/git-send-email.txt | 4 ++++
git-send-email.perl | 32 +++++++++++++++++++++-----------
2 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index f0e57a5..ac993d6 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -364,6 +364,10 @@ sendemail.confirm::
one of 'always', 'never', 'cc', 'compose', or 'auto'. See '--confirm'
in the previous section for the meaning of these values.
+sendmail.askpasswordcount::
+ Number of times the smtp password can be entered before sending mail is
+ aborted. Default is 1.
+
EXAMPLE
-------
Use gmail as the smtp server
diff --git a/git-send-email.perl b/git-send-email.perl
index 3782c3b..9b2eda3 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -203,6 +203,7 @@ my ($validate, $confirm);
my (@suppress_cc);
my ($auto_8bit_encoding);
my ($compose_encoding);
+my ($askpasswordcount) = 1;
my ($debug_net_smtp) = 0; # Net::SMTP, see send_message()
@@ -237,6 +238,7 @@ my %config_settings = (
"from" => \$sender,
"assume8bitencoding" => \$auto_8bit_encoding,
"composeencoding" => \$compose_encoding,
+ "askpasswordcount" => \$askpasswordcount,
);
my %config_path_settings = (
@@ -360,6 +362,10 @@ sub read_config {
}
}
+ if ($askpasswordcount < 1) {
+ $askpasswordcount = 1
+ }
+
if (!defined $smtp_encryption) {
my $enc = Git::config(@repo, "$prefix.smtpencryption");
if (defined $enc) {
@@ -1069,17 +1075,21 @@ sub smtp_auth_maybe {
# TODO: Authentication may fail not because credentials were
# invalid but due to other reasons, in which we should not
# reject credentials.
- $auth = Git::credential({
- 'protocol' => 'smtp',
- 'host' => smtp_host_string(),
- 'username' => $smtp_authuser,
- # if there's no password, "git credential fill" will
- # give us one, otherwise it'll just pass this one.
- 'password' => $smtp_authpass
- }, sub {
- my $cred = shift;
- return !!$smtp->auth($cred->{'username'}, $cred->{'password'});
- });
+ for my $i (1 .. $askpasswordcount) {
+ $auth = Git::credential({
+ 'protocol' => 'smtp',
+ 'host' => smtp_host_string(),
+ 'username' => $smtp_authuser,
+ # if there's no password, "git credential fill" will
+ # give us one, otherwise it'll just pass this one.
+ 'password' => $smtp_authpass
+ }, sub {
+ my $cred = shift;
+ return !!$smtp->auth($cred->{'username'},
$cred->{'password'});
+ });
+
+ last if ($auth);
+ }
return $auth;
}
--
1.8.4.2
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html