summaryrefslogtreecommitdiff
path: root/lisp/net/tramp-cache.el
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2016-08-15 12:29:20 +0200
committerMichael Albinus <michael.albinus@gmx.de>2016-08-15 12:29:20 +0200
commit9c2ce57719d0db8ac0a01b65d7e8d7ccc3f2d6ca (patch)
tree25e5622f56d6e416a0ca0c73096e7407bd831bcc /lisp/net/tramp-cache.el
parent9c2ea5cdd626f011cb535824223e49e5bdb20146 (diff)
downloademacs-9c2ce57719d0db8ac0a01b65d7e8d7ccc3f2d6ca.tar.gz
Fix stale cache problem in Tramp
* lisp/net/tramp-cache.el (tramp-get-connection-property): Check, that a process as key is still running. (Bug#22478)
Diffstat (limited to 'lisp/net/tramp-cache.el')
-rw-r--r--lisp/net/tramp-cache.el11
1 files changed, 8 insertions, 3 deletions
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 07176be6e4e..76b49a09e3a 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -237,9 +237,14 @@ connection, returns DEFAULT."
(aset key 3 nil)
(aset key 4 nil))
(let* ((hash (tramp-get-hash-table key))
- (value (if (hash-table-p hash)
- (gethash property hash default)
- default)))
+ (value
+ ;; If the key is an auxiliary process object, check whether
+ ;; the process is still alive.
+ (if (and (processp key) (not (memq (process-status key) '(run open))))
+ default
+ (if (hash-table-p hash)
+ (gethash property hash default)
+ default))))
(tramp-message key 7 "%s %s" property value)
value))