From af4213579c7d3ee48fdb99aadb671c6a28177e4a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 8 Sep 2023 15:10:46 +0530 Subject: [PATCH] ssh kitten: Fix a regression causing hostname directives in ssh.conf not matching when username is specified --- docs/changelog.rst | 2 ++ kittens/ssh/main.go | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 49e702b65..a036962f6 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -76,6 +76,8 @@ Detailed list of changes - Config file format: allow splitting lines by starting subsequent lines with a backslash (:pull:`6603`) +- ssh kitten: Fix a regression causing hostname directives in :file:`ssh.conf` not matching when username is specified (:disc:`6609`) + 0.29.2 [2023-07-27] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/kittens/ssh/main.go b/kittens/ssh/main.go index e9f0d098f..c4dc2966e 100644 --- a/kittens/ssh/main.go +++ b/kittens/ssh/main.go @@ -49,19 +49,23 @@ func get_destination(hostname string) (username, hostname_for_match string) { username = u.Username } hostname_for_match = hostname + parsed := false if strings.HasPrefix(hostname, "ssh://") { p, err := url.Parse(hostname) if err == nil { hostname_for_match = p.Hostname() + parsed = true if p.User.Username() != "" { username = p.User.Username() } } } else if strings.Contains(hostname, "@") && hostname[0] != '@' { username, hostname_for_match, _ = strings.Cut(hostname, "@") + parsed = true } - if strings.Contains(hostname, "@") && hostname[0] != '@' { - _, hostname_for_match, _ = strings.Cut(hostname_for_match, "@") + if !parsed && strings.Contains(hostname, "@") && hostname[0] != '@' { + _, hostname_for_match, _ = strings.Cut(hostname, "@") + parsed = true } hostname_for_match, _, _ = strings.Cut(hostname_for_match, ":") return