summaryrefslogtreecommitdiff
path: root/modules/ssh/dist
diff options
context:
space:
mode:
authorArtyom V. Poptsov <poptsov.artyom@gmail.com>2018-03-05 05:11:45 +0300
committerArtyom V. Poptsov <poptsov.artyom@gmail.com>2018-03-05 05:11:45 +0300
commite24401f1ef56b1f3d7ef847c54fb0c2fe9cf3cf8 (patch)
tree13fb921319587dad3fdae30a94b69c1a94e8d3ee /modules/ssh/dist
parentauth.scm: Add procedures for interacting w/ an OpenSSH agent (diff)
downloadguile-ssh-e24401f1ef56b1f3d7ef847c54fb0c2fe9cf3cf8.tar.gz
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.
Diffstat (limited to 'modules/ssh/dist')
-rw-r--r--modules/ssh/dist/node.scm15
1 files changed, 9 insertions, 6 deletions
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."