diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2010-02-15 16:04:53 +0100 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2010-02-15 16:04:53 +0100 |
commit | 7540f029959d8e67882d1304419171424143e494 (patch) | |
tree | bb3d30333292abb546671dc310f99893f060bb88 /lisp/net | |
parent | 737b5223e1c9521ecd8195185c4dbb3669e5a71c (diff) | |
download | emacs-7540f029959d8e67882d1304419171424143e494.tar.gz |
* net/tramp.el (tramp-process-actions, tramp-read-passwd):
* net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection): Use VEC
instead of PROC for caching "first-password-request". Otherwise,
new processes would not profit from passwords already entered.
* net/tramp-cache.el (tramp-dump-connection-properties): Don't
save "first-password-request" property.
Diffstat (limited to 'lisp/net')
-rw-r--r-- | lisp/net/tramp-cache.el | 7 | ||||
-rw-r--r-- | lisp/net/tramp-gvfs.el | 3 | ||||
-rw-r--r-- | lisp/net/tramp.el | 48 |
3 files changed, 31 insertions, 27 deletions
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index 4338a6edad1..ac86fabe3a9 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el @@ -1,7 +1,7 @@ ;;; tramp-cache.el --- file information caching for Tramp -;; Copyright (C) 2000, 2005, 2006, 2007, 2008, -;; 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2005, 2006, 2007, 2008, 2009, +;; 2010 Free Software Foundation, Inc. ;; Author: Daniel Pittman <daniel@inanna.danann.net> ;; Michael Albinus <michael.albinus@gmx.de> @@ -295,7 +295,8 @@ KEY identifies the connection, it is either a process or a vector." (if (and (vectorp key) (not (tramp-file-name-localname key))) (progn (remhash "process-name" value) - (remhash "process-buffer" value)) + (remhash "process-buffer" value) + (remhash "first-password-request" value)) (remhash key cache))) cache) ;; Dump it. diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index 3f1e1a463d3..a80e0f27752 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el @@ -1057,8 +1057,7 @@ connection if a previous connection has died for some reason." vec 3 "Opening connection for %s@%s using %s..." user host method)) ;; Enable auth-sorce and password-cache. - (tramp-set-connection-property - (tramp-get-connection-process vec) "first-password-request" t) + (tramp-set-connection-property vec "first-password-request" t) ;; There will be a callback of "askPassword", when a password is ;; needed. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index a573a75afe2..e59383e31e7 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -6539,7 +6539,7 @@ The terminal type can be configured with `tramp-terminal-type'." (defun tramp-process-actions (proc vec actions &optional timeout) "Perform actions until success or TIMEOUT." ;; Enable auth-source and password-cache. - (tramp-set-connection-property proc "first-password-request" t) + (tramp-set-connection-property vec "first-password-request" t) (let (exit) (while (not exit) (tramp-message proc 3 "Waiting for prompts from remote shell") @@ -8320,26 +8320,27 @@ Invokes `password-read' if available, `read-passwd' else." (with-current-buffer (process-buffer proc) (tramp-check-for-regexp proc tramp-password-prompt-regexp) (format "%s for %s " (capitalize (match-string 1)) key))))) - (prog1 - (or - ;; See if auth-sources contains something useful, if it's bound. - (and (boundp 'auth-sources) - (tramp-get-connection-property proc "first-password-request" nil) - ;; Try with Tramp's current method. - (funcall (symbol-function 'auth-source-user-or-password) - "password" tramp-current-host tramp-current-method)) - ;; Try the password cache. - (when (functionp 'password-read) - (unless (tramp-get-connection-property - proc "first-password-request" nil) - (funcall (symbol-function 'password-cache-remove) key)) - (let ((password - (funcall (symbol-function 'password-read) pw-prompt key))) - (funcall (symbol-function 'password-cache-add) key password) - password)) - ;; Else, get the password interactively. - (read-passwd pw-prompt)) - (tramp-set-connection-property proc "first-password-request" nil)))) + (with-parsed-tramp-file-name key nil + (prog1 + (or + ;; See if auth-sources contains something useful, if it's bound. + (and (boundp 'auth-sources) + (tramp-get-connection-property v "first-password-request" nil) + ;; Try with Tramp's current method. + (funcall (symbol-function 'auth-source-user-or-password) + "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) + (funcall (symbol-function 'password-cache-remove) key)) + (let ((password + (funcall (symbol-function 'password-read) pw-prompt key))) + (funcall (symbol-function 'password-cache-add) key password) + password)) + ;; Else, get the password interactively. + (read-passwd pw-prompt)) + (tramp-set-connection-property v "first-password-request" nil))))) (defun tramp-clear-passwd (vec) "Clear password cache for connection related to VEC." @@ -8585,7 +8586,7 @@ Only works for Bourne-like shells." ;; rsync). ;; * Keep a second connection open for out-of-band methods like scp or ;; rsync. -;; * Support ptys in `tramp-handle-start-file-process'. +;; * Support ptys in `tramp-handle-start-file-process'. (Bug#4604) ;; * IMHO, it's a drawback that currently Tramp doesn't support ;; Unicode in Dired file names by default. Is it possible to ;; improve Tramp to set LC_ALL to "C" only for commands where Tramp @@ -8596,6 +8597,9 @@ Only works for Bourne-like shells." ;; * Load Tramp subpackages only when needed. (Bug#1529, Bug#5448) ;; * Try telnet+curl as new method. It might be useful for busybox, ;; without built-in uuencode/uudecode. +;; * Let `shell-dynamic-complete-*' and `comint-dynamic-complete' work +;; on remote hosts. +;; * Use secrets.el for password handling. ;; Functions for file-name-handler-alist: ;; diff-latest-backup-file -- in diff.el |