# HG changeset patch # User Michael Albinus # Date 1266246293 -3600 # Node ID 7e66e7efd47dfcbd2baaa3a8b261ff0ae83f09c4 # Parent b6358fb91b0bf7f4fc839b4de9705b17a7a0a588 * 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. diff -r b6358fb91b0b -r 7e66e7efd47d lisp/ChangeLog --- a/lisp/ChangeLog Sun Feb 14 18:34:09 2010 +0100 +++ b/lisp/ChangeLog Mon Feb 15 16:04:53 2010 +0100 @@ -1,3 +1,13 @@ +2010-02-15 Michael Albinus + + * 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. + 2010-02-14 Juanma Barranquero * outline.el (outline-head-from-level): diff -r b6358fb91b0b -r 7e66e7efd47d lisp/net/tramp-cache.el --- a/lisp/net/tramp-cache.el Sun Feb 14 18:34:09 2010 +0100 +++ b/lisp/net/tramp-cache.el Mon Feb 15 16:04:53 2010 +0100 @@ -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 ;; Michael Albinus @@ -295,7 +295,8 @@ (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 -r b6358fb91b0b -r 7e66e7efd47d lisp/net/tramp-gvfs.el --- a/lisp/net/tramp-gvfs.el Sun Feb 14 18:34:09 2010 +0100 +++ b/lisp/net/tramp-gvfs.el Mon Feb 15 16:04:53 2010 +0100 @@ -1057,8 +1057,7 @@ 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 -r b6358fb91b0b -r 7e66e7efd47d lisp/net/tramp.el --- a/lisp/net/tramp.el Sun Feb 14 18:34:09 2010 +0100 +++ b/lisp/net/tramp.el Mon Feb 15 16:04:53 2010 +0100 @@ -6539,7 +6539,7 @@ (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 @@ (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 @@ ;; 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 @@ ;; * 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