1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-09 21:40:33 +02:00

REPL server avoids thread cleanup handlers

* module/system/repl/server.scm (serve-client): Avoid thread cleanup
  handlers.
This commit is contained in:
Andy Wingo 2016-10-31 22:13:30 +01:00
parent b85f033526
commit 94a3433b9d

View file

@ -133,11 +133,11 @@
(define (serve-client client addr) (define (serve-client client addr)
(let ((thread (current-thread))) (let ((thread (current-thread)))
;; Close the socket when this thread exits, even if canceled. ;; To shut down this thread and socket, cause it to unwind.
(set-thread-cleanup! thread (lambda () (close-socket! client)))
;; Arrange to cancel this thread to forcefully shut down the socket.
(add-open-socket! client (lambda () (cancel-thread thread)))) (add-open-socket! client (lambda () (cancel-thread thread))))
(dynamic-wind
(lambda () #f)
(with-continuation-barrier (with-continuation-barrier
(lambda () (lambda ()
(parameterize ((current-input-port client) (parameterize ((current-input-port client)
@ -145,4 +145,5 @@
(current-error-port client) (current-error-port client)
(current-warning-port client)) (current-warning-port client))
(with-fluids ((*repl-stack* '())) (with-fluids ((*repl-stack* '()))
(start-repl)))))) (start-repl)))))
(lambda () (close-socket! client))))