summaryrefslogtreecommitdiff
path: root/lisp/net
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2010-02-15 16:04:53 +0100
committerMichael Albinus <michael.albinus@gmx.de>2010-02-15 16:04:53 +0100
commit7540f029959d8e67882d1304419171424143e494 (patch)
treebb3d30333292abb546671dc310f99893f060bb88 /lisp/net
parent737b5223e1c9521ecd8195185c4dbb3669e5a71c (diff)
downloademacs-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.el7
-rw-r--r--lisp/net/tramp-gvfs.el3
-rw-r--r--lisp/net/tramp.el48
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