summaryrefslogtreecommitdiff
path: root/lisp/net/tramp.el
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2014-03-06 14:23:04 +0100
committerMichael Albinus <michael.albinus@gmx.de>2014-03-06 14:23:04 +0100
commitfa965cbf7420c7ee5a0dde0df472592cd3aa2a1d (patch)
treee1daaa1e55e9d8e55cb7faa53dbddc1896f5f467 /lisp/net/tramp.el
parent7c45220b0323576d27df26154a87187359fd874a (diff)
downloademacs-fa965cbf7420c7ee5a0dde0df472592cd3aa2a1d.tar.gz
* net/tramp.el (tramp-error): VEC-OR-PROC can be nil.
(tramp-action-password): Clear password cache if needed. (tramp-read-passwd): Do not clear password cache. * net/tramp-gvfs.el (tramp-gvfs-handler-askpassword): Clear password cache unless it is the first password request.
Diffstat (limited to 'lisp/net/tramp.el')
-rw-r--r--lisp/net/tramp.el26
1 files changed, 15 insertions, 11 deletions
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 7d88869a0d1..face017946d 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1560,12 +1560,13 @@ signal identifier to be raised, remaining arguments passed to
`tramp-message'. Finally, signal SIGNAL is raised."
(let (tramp-message-show-message)
(tramp-backtrace vec-or-proc)
- (tramp-message
- vec-or-proc 1 "%s"
- (error-message-string
- (list signal
- (get signal 'error-message)
- (apply 'format fmt-string arguments))))
+ (when vec-or-proc
+ (tramp-message
+ vec-or-proc 1 "%s"
+ (error-message-string
+ (list signal
+ (get signal 'error-message)
+ (apply 'format fmt-string arguments)))))
(signal signal (list (apply 'format fmt-string arguments)))))
(defsubst tramp-error-with-buffer
@@ -3400,6 +3401,12 @@ of."
(with-current-buffer (process-buffer proc)
(let ((enable-recursive-minibuffers t)
(case-fold-search t))
+ ;; Let's check whether a wrong password has been sent already.
+ ;; Sometimes, the process returns a new password request
+ ;; immediately after rejecting the previous (wrong) one.
+ (goto-char (point-min))
+ (when (search-forward-regexp tramp-wrong-passwd-regexp nil t)
+ (tramp-clear-passwd vec))
(tramp-check-for-regexp proc tramp-password-prompt-regexp)
(tramp-message vec 3 "Sending %s" (match-string 1))
;; We don't call `tramp-send-string' in order to hide the
@@ -3508,8 +3515,8 @@ The terminal type can be configured with `tramp-terminal-type'."
PROC and VEC indicate the remote connection to be used. POS, if
set, is the starting point of the region to be deleted in the
connection buffer."
- ;; Enable `auth-source' and `password-cache'. We must use
- ;; tramp-current-* variables in case we have several hops.
+ ;; Enable `auth-source'. We must use tramp-current-* variables in
+ ;; case we have several hops.
(tramp-set-connection-property
(tramp-dissect-file-name
(tramp-make-tramp-file-name
@@ -4131,9 +4138,6 @@ Invokes `password-read' if available, `read-passwd' else."
"password" tramp-current-host tramp-current-method)))
;; Try the password cache.
(when (functionp 'password-read)
- (unless (tramp-get-connection-property
- v "first-password-request" nil)
- (tramp-compat-funcall 'password-cache-remove key))
(let ((password
(tramp-compat-funcall 'password-read pw-prompt key)))
(tramp-compat-funcall 'password-cache-add key password)