summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2022-02-26 12:51:26 +0100
committerMichael Albinus <michael.albinus@gmx.de>2022-02-26 12:51:26 +0100
commita50f8dec092ecc82814fd21ed2cd1bfdc693655d (patch)
tree4cfd72c342b70280055a4d80a9dc267a96699342
parente86eae21a9b72a751d2dc3419b56debfce2022a9 (diff)
downloademacs-a50f8dec092ecc82814fd21ed2cd1bfdc693655d.tar.gz
Follow OpenSSH changes in Tramp
* lisp/net/tramp-sh.el (tramp-ssh-controlmaster-options): Reimplement. OpenSSH has changed its diagnostics messages.
-rw-r--r--lisp/net/tramp-sh.el53
1 files changed, 25 insertions, 28 deletions
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 80fd99e7f65..de4d579740a 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -4753,36 +4753,33 @@ Goes through the list `tramp-inline-compress-commands'."
(t (setq tramp-ssh-controlmaster-options "")
(let ((case-fold-search t))
(ignore-errors
- (when (executable-find "ssh")
- (with-tramp-progress-reporter
- vec 4 "Computing ControlMaster options"
- (with-temp-buffer
- (tramp-call-process vec "ssh" nil t nil "-o" "ControlMaster")
- (goto-char (point-min))
- (when (search-forward-regexp "\\(missing\\|no\\).+argument" nil t)
- (setq tramp-ssh-controlmaster-options
- "-o ControlMaster=auto")))
- (unless (zerop (length tramp-ssh-controlmaster-options))
- (with-temp-buffer
- ;; We use a non-existing IP address, in order to
- ;; avoid useless connections, and DNS timeouts.
- ;; Setting ConnectTimeout is needed since OpenSSH 7.
- (tramp-call-process
- vec "ssh" nil t nil
- "-o" "ConnectTimeout=1" "-o" "ControlPath=%C" "0.0.0.1")
- (goto-char (point-min))
+ (with-tramp-progress-reporter
+ vec 4 "Computing ControlMaster options"
+ ;; We use a non-existing IP address, in order to avoid
+ ;; useless connections, and DNS timeouts.
+ (when (zerop
+ (tramp-call-process
+ vec "ssh" nil nil nil
+ "-G" "-o" "ControlMaster=auto" "0.0.0.1"))
+ (setq tramp-ssh-controlmaster-options
+ "-o ControlMaster=auto")
+ (if (zerop
+ (tramp-call-process
+ vec "ssh" nil nil nil
+ "-G" "-o" "ControlPath='tramp.%C'" "0.0.0.1"))
(setq tramp-ssh-controlmaster-options
(concat tramp-ssh-controlmaster-options
- (if (search-forward-regexp "unknown.+key" nil t)
- " -o ControlPath='tramp.%%r@%%h:%%p'"
- " -o ControlPath='tramp.%%C'"))))
- (with-temp-buffer
- (tramp-call-process vec "ssh" nil t nil "-o" "ControlPersist")
- (goto-char (point-min))
- (when (search-forward-regexp "missing.+argument" nil t)
- (setq tramp-ssh-controlmaster-options
- (concat tramp-ssh-controlmaster-options
- " -o ControlPersist=no")))))))))
+ " -o ControlPath='tramp.%%C'"))
+ (setq tramp-ssh-controlmaster-options
+ (concat tramp-ssh-controlmaster-options
+ " -o ControlPath='tramp.%%r@%%h:%%p'")))
+ (when (zerop
+ (tramp-call-process
+ vec "ssh" nil nil nil
+ "-G" "-o" "ControlPersist=no" "0.0.0.1"))
+ (setq tramp-ssh-controlmaster-options
+ (concat tramp-ssh-controlmaster-options
+ " -o ControlPersist=no")))))))
tramp-ssh-controlmaster-options)))
(defun tramp-scp-strict-file-name-checking (vec)