From 1fbb4f763eac6903558e9e7efc408a1684ff7b07 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 15 Mar 2022 22:09:40 +0530 Subject: [PATCH] Only check OpenSSH version once on a machine if it is new enough --- kittens/ssh/main.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kittens/ssh/main.py b/kittens/ssh/main.py index 0e52bc8ab..3d6fe96ce 100644 --- a/kittens/ssh/main.py +++ b/kittens/ssh/main.py @@ -28,7 +28,7 @@ from typing import ( ) from kitty.constants import ( - runtime_dir, shell_integration_dir, ssh_control_master_template, + cache_dir, runtime_dir, shell_integration_dir, ssh_control_master_template, terminfo_dir ) from kitty.options.types import Options @@ -593,7 +593,9 @@ def run_ssh(ssh_args: List[str], server_args: List[str], found_extra_args: Tuple use_kitty_askpass = host_opts.askpass == 'native' or (host_opts.askpass == 'unless-set' and 'SSH_ASKPASS' not in os.environ) need_to_request_data = True if use_kitty_askpass: - if ssh_version() >= (8, 4): + sentinel = os.path.join(cache_dir(), 'openssh-is-new-enough-for-askpass') + if os.path.exists(sentinel) or ssh_version() >= (8, 4): + open(sentinel, 'w').close() # SSH_ASKPASS_REQUIRE was introduced in 8.4 release on 2020-09-27 need_to_request_data = False os.environ['SSH_ASKPASS_REQUIRE'] = 'force'