From c37e1e2f65c36f44621e94ace02e04255a66ecc7 Mon Sep 17 00:00:00 2001 From: "Artyom V. Poptsov" Date: Sun, 25 Dec 2016 08:05:46 +0300 Subject: shell.scm (rexec): Close a remote pipe after use * modules/ssh/shell.scm (rexec): Close a remote pipe after use. --- modules/ssh/shell.scm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'modules/ssh/shell.scm') diff --git a/modules/ssh/shell.scm b/modules/ssh/shell.scm index f3b9308..1e21135 100644 --- a/modules/ssh/shell.scm +++ b/modules/ssh/shell.scm @@ -59,14 +59,16 @@ (define (rexec session cmd) "Execute a command CMD on the remote side. Return two values: list of output lines returned by CMD and its exit code." - (let ((channel (open-remote-input-pipe session cmd))) - (values (let loop ((line (read-line channel)) - (result '())) - (if (eof-or-null? line) - (reverse result) - (loop (read-line channel) - (cons line result)))) - (channel-get-exit-status channel)))) + (let* ((channel (open-remote-input-pipe session cmd)) + (result (let loop ((line (read-line channel)) + (result '())) + (if (eof-or-null? line) + (reverse result) + (loop (read-line channel) + (cons line result))))) + (exit-status (channel-get-exit-status channel))) + (close channel) + (values result exit-status))) ;;; -- cgit v1.2.3