X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fserve-event.lisp;h=2b72d840f61b26227d1692e6ee984b8d0ce819f5;hb=ba12c5c0420f28250ef4931b47af92c6d7963195;hp=e3563e66055fe9bcc1be23b5da70c47d45174ed0;hpb=fcdd5b05583258e43bfe22bdfaea1fc34f85289d;p=sbcl.git diff --git a/src/code/serve-event.lisp b/src/code/serve-event.lisp index e3563e6..2b72d84 100644 --- a/src/code/serve-event.lisp +++ b/src/code/serve-event.lisp @@ -322,7 +322,11 @@ happens. Server returns T if something happened and NIL otherwise. Timeout (ecase (handler-direction handler) (:input (sb!unix:fd-isset fd read-fds)) (:output (sb!unix:fd-isset fd write-fds))))))) - (funcall (handler-function handler) - (handler-descriptor handler))) + (with-simple-restart (remove-fd-handler "Remove ~S" handler) + (funcall (handler-function handler) + (handler-descriptor handler)) + (go :next)) + (remove-fd-handler handler) + :next) t))))))