From 2892f79f819dd2dd9420f7e74bcb6e293d377452 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Thu, 2 Jul 2020 13:59:51 +0200 Subject: [PATCH] guix: Add nodelay to SSH store connection * gnu/packages/ssh.scm (guile-ssh)[patches]: Add patch. * gnu/packages/patches/guile-ssh-0.12.0-nodelay.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * guix/ssh.scm (open-ssh-session): Use new nodelay option. --- gnu/local.mk | 1 + .../patches/guile-ssh-0.12.0-nodelay.patch | 81 +++++++++++++++++++ gnu/packages/ssh.scm | 1 + guix/ssh.scm | 4 +- 4 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/guile-ssh-0.12.0-nodelay.patch diff --git a/gnu/local.mk b/gnu/local.mk index 8bb56010c2..26725cbca1 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1068,6 +1068,7 @@ dist_patch_DATA = \ %D%/packages/patches/guile-present-coding.patch \ %D%/packages/patches/guile-rsvg-pkgconfig.patch \ %D%/packages/patches/guile-emacs-fix-configure.patch \ + %D%/packages/patches/guile-ssh-0.12.0-nodelay.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \ %D%/packages/patches/gtk2-theme-paths.patch \ diff --git a/gnu/packages/patches/guile-ssh-0.12.0-nodelay.patch b/gnu/packages/patches/guile-ssh-0.12.0-nodelay.patch new file mode 100644 index 0000000000..bc649b7469 --- /dev/null +++ b/gnu/packages/patches/guile-ssh-0.12.0-nodelay.patch @@ -0,0 +1,81 @@ +commit f697c603ef196eb88c1d7d629e456bf5054e35a4 +Author: Lars-Dominik Braun +Date: Thu Jul 2 13:26:21 2020 +0200 + + modules/ssh/session.scm: Add nodelay to make-session + + * modules/ssh/session.scm (make-session): Add key nodelay + +diff --git a/modules/ssh/session.scm b/modules/ssh/session.scm +index d7c0831..042bd5f 100644 +--- a/modules/ssh/session.scm ++++ b/modules/ssh/session.scm +@@ -74,7 +74,7 @@ + knownhosts timeout timeout-usec ssh1 ssh2 log-verbosity + ciphers-c-s ciphers-s-c compression-c-s compression-s-c + proxycommand stricthostkeycheck compression +- compression-level callbacks config) ++ compression-level nodelay callbacks config) + "Make a new SSH session with specified configuration.\n + Return a new SSH session." + (let ((session (%make-session))) +@@ -98,6 +98,7 @@ Return a new SSH session." + (session-set-if-specified! stricthostkeycheck) + (session-set-if-specified! compression) + (session-set-if-specified! compression-level) ++ (session-set-if-specified! nodelay) + (session-set-if-specified! callbacks) + + (when config + +commit b80121ae3e851a676f25fd2b7e33371b94a6e030 +Author: Lars-Dominik Braun +Date: Thu Jul 2 08:52:13 2020 +0200 + + libguile-ssh/session-func.c: Add NODELAY option + + * libguile-ssh/session-func.c (session_options, set_option): Add libssh’s + nodelay option. + * tests/session.scm ("session-set!, valid values", "session-set!, invalid + values"): Add unit-tests. + +diff --git a/libguile-ssh/session-func.c b/libguile-ssh/session-func.c +index 48db779..9240734 100644 +--- a/libguile-ssh/session-func.c ++++ b/libguile-ssh/session-func.c +@@ -71,6 +71,7 @@ static struct symbol_mapping session_options[] = { + { "stricthostkeycheck", SSH_OPTIONS_STRICTHOSTKEYCHECK }, + { "compression", SSH_OPTIONS_COMPRESSION }, + { "compression-level", SSH_OPTIONS_COMPRESSION_LEVEL }, ++ { "nodelay", SSH_OPTIONS_NODELAY }, + { "callbacks", GSSH_OPTIONS_CALLBACKS }, + { NULL, -1 } + }; +@@ -366,6 +367,7 @@ set_option (SCM scm_session, struct session_data* sd, int type, SCM value) + case SSH_OPTIONS_SSH1: + case SSH_OPTIONS_SSH2: + case SSH_OPTIONS_STRICTHOSTKEYCHECK: ++ case SSH_OPTIONS_NODELAY: + return set_bool_opt (session, type, value); + + case SSH_OPTIONS_FD: +diff --git a/tests/session.scm b/tests/session.scm +index 2eb1df7..83a864d 100644 +--- a/tests/session.scm ++++ b/tests/session.scm +@@ -70,6 +70,7 @@ + nolog) + (compression "yes" "no") + (compression-level 1 2 3 4 5 6 7 8 9) ++ (nodelay #f #t) + (callbacks ((user-data . "hello") + (global-request-callback . ,(const #f)))))) + (res #t)) +@@ -95,6 +96,7 @@ + (log-verbosity "string" -1 0 1 2 3 4 5) + (compression 12345) + (compression-level -1 0 10) ++ (nodelay 12345 "string") + (callbacks "not a list" + ((global-request-callback . #f))))) + (res #t)) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index ea42e72de2..0d9fa5fd54 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -259,6 +259,7 @@ Additionally, various channel-specific options can be negotiated.") (sha256 (base32 "054hd9rzfhb48gc1hw3rphhp0cnnd4bs5qmidy5ygsyvy9ravlad")) + (patches (search-patches "guile-ssh-0.12.0-nodelay.patch")) (modules '((guix build utils))))) (build-system gnu-build-system) (outputs '("out" "debug")) diff --git a/guix/ssh.scm b/guix/ssh.scm index 2d7ca7d01d..df7a9bed4a 100644 --- a/guix/ssh.scm +++ b/guix/ssh.scm @@ -129,7 +129,9 @@ Throw an error on failure." ;; We need lightweight compression when ;; exchanging full archives. #:compression compression - #:compression-level 3))) + #:compression-level 3 + + #:nodelay #t))) ;; Honor ~/.ssh/config. (session-parse-config! session) -- 2.20.1