]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-compute-multi-hops): In case of su(do)?
authorMichael Albinus <michael.albinus@gmx.de>
Sun, 27 Jan 2008 16:20:57 +0000 (16:20 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Sun, 27 Jan 2008 16:20:57 +0000 (16:20 +0000)
methods, the host name must be a local host.

lisp/ChangeLog
lisp/net/tramp.el

index 679784fbcd055889877fdc53a4b8f09f385ff240..20478b7511cd960a48ebc8fa6034ffa8779160d5 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-compute-multi-hops): In case of su(do)?
+       methods, the host name must be a local host.
+
 2008-01-27  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * server.el (server-process-filter): Check for non-nil before
index 9fba537f006fe540069a32c357dd557160fee236..b9e6a279644c74844a1d960fa27fc2e5b95ef2fb 100644 (file)
@@ -6052,6 +6052,27 @@ Gateway hops are already opened."
           "Method `%s' is not supported for multi-hops."
           (tramp-file-name-method item)))))
 
+    ;; In case the host name is not used for the remote shell
+    ;; command, the user could be misguided by applying a random
+    ;; hostname.
+    (let* ((v (car target-alist))
+          (method (tramp-file-name-method v))
+          (host (tramp-file-name-host v)))
+      (unless
+         (or
+          ;; There are multi-hops.
+          (cdr target-alist)
+          ;; The host name is used for the remote shell command.
+          (member
+           '("%h") (tramp-get-method-parameter method 'tramp-login-args))
+          ;; The host is local.  We cannot use `tramp-local-host-p'
+          ;; here, because it opens a connection as well.
+          (string-match
+           (concat "^" (regexp-opt (list "localhost" (system-name)) t) "$")
+           host))
+       (tramp-error
+        v 'file-error "Wrong hostname `%s' for method `%s'" host method)))
+
     ;; Result.
     target-alist))