From e24401f1ef56b1f3d7ef847c54fb0c2fe9cf3cf8 Mon Sep 17 00:00:00 2001 From: "Artyom V. Poptsov" Date: Mon, 5 Mar 2018 05:11:45 +0300 Subject: node.scm (node-run-server): Check return code * modules/ssh/dist/node.scm (node-run-server): Check return code of the executed command, throw a 'node-error' on a non-zero code. * AUTHORS, NEWS, THANKS: Update. --- modules/ssh/dist/node.scm | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'modules/ssh/dist') diff --git a/modules/ssh/dist/node.scm b/modules/ssh/dist/node.scm index 09ce794..9ff3750 100644 --- a/modules/ssh/dist/node.scm +++ b/modules/ssh/dist/node.scm @@ -349,13 +349,16 @@ listens on an expected port, return #f otherwise." (guile-up-and-running?)))))))) +(define %guile-listen-command "nohup guile --listen=~a 0<&- &>/dev/null") + (define (node-run-server node) - "Run a RREPL server on a NODE." - (open-remote-input-pipe (node-session node) - (format #f "nohup guile --listen=~a 0<&- &>/dev/null" - (node-repl-port node))) - (while (not (node-server-running? node)) - (usleep 100))) + "Run a RREPL server on a NODE. Throw 'node-error on an error." + (let* ((cmd (format #f %guile-listen-command (node-repl-port node))) + (channel (open-remote-input-pipe (node-session node) cmd))) + (when (not (zero? (channel-get-exit-status channel))) + (node-error "node-run-server: Could not execute command" cmd)) + (while (not (node-server-running? node)) + (usleep 100)))) (define (node-stop-server node) "Stop a RREPL server on a NODE." -- cgit v1.2.3