"J.D. Smith" <[email protected]> writes:
Hi,
>> Tramp doesn't offer such a user option. But thinking about, I come back
>> to an old idea slumbering on my TODO: Make external methods (like scp,
>> rsync) multi-hop capable.
>>
>> It shouldn't be too hard. As you know, Tramp distinguishes between
>> inline and external methods, like ssh and scp. The major difference is
>> copying large files, which is performed by the scp command. For
>> everything else, both use the same code.
>>
>> In theory, it should be possible to add another check for external Tramp
>> methods: If they are used inside a multi-hop connection, don't use the
>> external command. Then, they should behave identically.
>
> That sounds like a better plan indeed!
I've compiled a small patch which should make this happen. Would you
like to check?
Best regards, Michael.
diff --git a/lisp/tramp-sh.el b/lisp/tramp-sh.el
index e7e21684..1aa114e7 100644
--- a/lisp/tramp-sh.el
+++ b/lisp/tramp-sh.el
@@ -5677,8 +5677,9 @@ raises an error."
(defun tramp-method-out-of-band-p (vec size)
"Return t if this is an out-of-band method, nil otherwise."
(and
- ;; It shall be an out-of-band method.
- (tramp-get-method-parameter vec 'tramp-copy-program)
+ ;; There shouldn't be a multi-hop.
+ (or (not (tramp-multi-hop-p vec))
+ (null (cdr (tramp-compute-multi-hops vec))))
;; There must be a size, otherwise the file doesn't exist.
(numberp size)
;; Either the file size is large enough, or (in rare cases) there
diff --git a/lisp/tramp.el b/lisp/tramp.el
index ebbe6df0..39d3d073 100644
--- a/lisp/tramp.el
+++ b/lisp/tramp.el
@@ -296,9 +296,8 @@ pair of the form (KEY VALUE). The following KEYs are defined:
- \"%a\" adds the pseudo-terminal allocation argument \"-t\" in
asynchronous processes, if the connection type is not `pipe'.
- The existence of `tramp-login-args', combined with the
- absence of `tramp-copy-args', is an indication that the
- method is capable of multi-hops.
+ The existence of `tramp-login-args' is an indication that the method
+ is capable of multi-hops.
* `tramp-async-args'
When an asynchronous process is started, we know already that
@@ -5148,7 +5147,7 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
"Whether the method of VEC is capable of multi-hops."
(let ((tramp-verbose 0))
(and (tramp-sh-file-name-handler-p vec)
- (not (tramp-get-method-parameter vec 'tramp-copy-program)))))
+ (tramp-get-method-parameter vec 'tramp-login-args))))
(defun tramp-add-hops (vec)
"Add ad-hoc proxy definitions to `tramp-default-proxies-alist'."