summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorArtyom V. Poptsov <poptsov.artyom@gmail.com>2016-05-03 10:17:08 +0400
committerArtyom V. Poptsov <poptsov.artyom@gmail.com>2016-05-03 10:17:08 +0400
commit703b7f8f8e9372691baf547d94ce0edaf397059f (patch)
tree87e9e96111fddfbf3cc41e0773812d1f5fc25efe /tests
parenttests/client-server.scm (start-server/channel-test): Use 'start-server-loop' (diff)
downloadguile-ssh-703b7f8f8e9372691baf547d94ce0edaf397059f.tar.gz
tests/common.scm (make-server-for-test): Protect with a mutex
* tests/common.scm (make-server-for-test): Protect the whole part of getting a free port and calling 'server-listen' with a mutex so different processes trying to make a server won't interfere with each other. * tests/client-server.scm: Remove extra 'server-listen' calls.
Diffstat (limited to 'tests')
-rw-r--r--tests/client-server.scm2
-rw-r--r--tests/common.scm30
2 files changed, 19 insertions, 13 deletions
diff --git a/tests/client-server.scm b/tests/client-server.scm
index c60a36f..1e0fd94 100644
--- a/tests/client-server.scm
+++ b/tests/client-server.scm
@@ -67,7 +67,6 @@
(define (simple-server-proc server)
"start a SERVER that accepts a connection and handles a key exchange."
- (server-listen server)
(let ((s (server-accept server)))
(server-handle-key-exchange s)))
@@ -336,7 +335,6 @@
;; server
(lambda (server)
- (server-listen server)
(let ((session (server-accept server)))
(server-handle-key-exchange session)
(make-session-loop session
diff --git a/tests/common.scm b/tests/common.scm
index 2a04971..5da5086 100644
--- a/tests/common.scm
+++ b/tests/common.scm
@@ -105,18 +105,26 @@
(define (make-server-for-test)
"Make a server with predefined parameters for a test."
+ (define mtx (make-mutex 'allow-external-unlock))
+ (lock-mutex mtx)
+ (dynamic-wind
+ (const #f)
+ (lambda ()
+ ;; FIXME: This hack is aimed to give every server its own unique
+ ;; port to listen to. Clients will pick up new port number
+ ;; automatically through global `port' symbol as well.
+ (set! *port* (get-unused-port))
- ;; FIXME: This hack is aimed to give every server its own unique
- ;; port to listen to. Clients will pick up new port number
- ;; automatically through global `port' symbol as well.
- (set! *port* (get-unused-port))
-
- (make-server
- #:bindaddr %addr
- #:bindport *port*
- #:rsakey %rsakey
- #:dsakey %dsakey
- #:log-verbosity 'rare))
+ (let ((s (make-server
+ #:bindaddr %addr
+ #:bindport *port*
+ #:rsakey %rsakey
+ #:dsakey %dsakey
+ #:log-verbosity 'rare)))
+ (server-listen s)
+ s))
+ (lambda ()
+ (unlock-mutex mtx))))
;;; Port helpers.