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:
parent
b85f033526
commit
94a3433b9d
1 changed files with 12 additions and 11 deletions
|
@ -133,16 +133,17 @@
|
|||
(define (serve-client client addr)
|
||||
|
||||
(let ((thread (current-thread)))
|
||||
;; Close the socket when this thread exits, even if canceled.
|
||||
(set-thread-cleanup! thread (lambda () (close-socket! client)))
|
||||
;; Arrange to cancel this thread to forcefully shut down the socket.
|
||||
;; To shut down this thread and socket, cause it to unwind.
|
||||
(add-open-socket! client (lambda () (cancel-thread thread))))
|
||||
|
||||
(with-continuation-barrier
|
||||
(lambda ()
|
||||
(parameterize ((current-input-port client)
|
||||
(current-output-port client)
|
||||
(current-error-port client)
|
||||
(current-warning-port client))
|
||||
(with-fluids ((*repl-stack* '()))
|
||||
(start-repl))))))
|
||||
(dynamic-wind
|
||||
(lambda () #f)
|
||||
(with-continuation-barrier
|
||||
(lambda ()
|
||||
(parameterize ((current-input-port client)
|
||||
(current-output-port client)
|
||||
(current-error-port client)
|
||||
(current-warning-port client))
|
||||
(with-fluids ((*repl-stack* '()))
|
||||
(start-repl)))))
|
||||
(lambda () (close-socket! client))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue