1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-22 05:31:01 -08:00

Follow OpenSSH changes in Tramp

* lisp/net/tramp-sh.el (tramp-ssh-controlmaster-options):
Reimplement.  OpenSSH has changed its diagnostics messages.
This commit is contained in:
Michael Albinus 2022-02-26 12:51:26 +01:00
parent e86eae21a9
commit a50f8dec09

View file

@ -4753,36 +4753,33 @@ Goes through the list `tramp-inline-compress-commands'."
(t (setq tramp-ssh-controlmaster-options "") (t (setq tramp-ssh-controlmaster-options "")
(let ((case-fold-search t)) (let ((case-fold-search t))
(ignore-errors (ignore-errors
(when (executable-find "ssh") (with-tramp-progress-reporter
(with-tramp-progress-reporter vec 4 "Computing ControlMaster options"
vec 4 "Computing ControlMaster options" ;; We use a non-existing IP address, in order to avoid
(with-temp-buffer ;; useless connections, and DNS timeouts.
(tramp-call-process vec "ssh" nil t nil "-o" "ControlMaster") (when (zerop
(goto-char (point-min)) (tramp-call-process
(when (search-forward-regexp "\\(missing\\|no\\).+argument" nil t) vec "ssh" nil nil nil
(setq tramp-ssh-controlmaster-options "-G" "-o" "ControlMaster=auto" "0.0.0.1"))
"-o ControlMaster=auto"))) (setq tramp-ssh-controlmaster-options
(unless (zerop (length tramp-ssh-controlmaster-options)) "-o ControlMaster=auto")
(with-temp-buffer (if (zerop
;; We use a non-existing IP address, in order to (tramp-call-process
;; avoid useless connections, and DNS timeouts. vec "ssh" nil nil nil
;; Setting ConnectTimeout is needed since OpenSSH 7. "-G" "-o" "ControlPath='tramp.%C'" "0.0.0.1"))
(tramp-call-process
vec "ssh" nil t nil
"-o" "ConnectTimeout=1" "-o" "ControlPath=%C" "0.0.0.1")
(goto-char (point-min))
(setq tramp-ssh-controlmaster-options (setq tramp-ssh-controlmaster-options
(concat tramp-ssh-controlmaster-options (concat tramp-ssh-controlmaster-options
(if (search-forward-regexp "unknown.+key" nil t) " -o ControlPath='tramp.%%C'"))
" -o ControlPath='tramp.%%r@%%h:%%p'" (setq tramp-ssh-controlmaster-options
" -o ControlPath='tramp.%%C'")))) (concat tramp-ssh-controlmaster-options
(with-temp-buffer " -o ControlPath='tramp.%%r@%%h:%%p'")))
(tramp-call-process vec "ssh" nil t nil "-o" "ControlPersist") (when (zerop
(goto-char (point-min)) (tramp-call-process
(when (search-forward-regexp "missing.+argument" nil t) vec "ssh" nil nil nil
(setq tramp-ssh-controlmaster-options "-G" "-o" "ControlPersist=no" "0.0.0.1"))
(concat tramp-ssh-controlmaster-options (setq tramp-ssh-controlmaster-options
" -o ControlPersist=no"))))))))) (concat tramp-ssh-controlmaster-options
" -o ControlPersist=no")))))))
tramp-ssh-controlmaster-options))) tramp-ssh-controlmaster-options)))
(defun tramp-scp-strict-file-name-checking (vec) (defun tramp-scp-strict-file-name-checking (vec)