X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=8sync%2Fsystems%2Firc.scm;h=80d4ce182f4fe2a7ba65aa729f56c63f0de3252c;hp=7ab93169186451fdf936bf9edf96b129210fe3b3;hb=eecf751958934a26ac6d17948392db21ee07a8e1;hpb=9bb036f18457a6c2d24343e21e6950f9df5043e7 diff --git a/8sync/systems/irc.scm b/8sync/systems/irc.scm index 7ab9316..80d4ce1 100755 --- a/8sync/systems/irc.scm +++ b/8sync/systems/irc.scm @@ -229,7 +229,9 @@ (define (reset-buffer) (set! buffer '())) (define (should-read-char socket) - (and (char-ready? socket) (not (eof-object? (peek-char socket))))) + (and (not (port-closed? socket)) + (char-ready? socket) + (not (eof-object? (peek-char socket))))) (define (irc-handler socket) (while (should-read-char socket) (set! buffer (cons (read-char socket) buffer)) @@ -239,11 +241,21 @@ ;; reset buffer (set! buffer '()) ;; run it - (%8sync (%run (handle-line - socket - ready-line - username))))) - (_ #f)))) + (%8sync-run (handle-line + socket + ready-line + username)))) + (_ #f))) + ;; I need to shut things down on EOF object + (cond + ((port-closed? socket) + (display "port closed time\n") + (port-remove-request socket)) + ((and (char-ready? socket) + (eof-object? (peek-char socket))) + (display "port eof time\n") + (close socket) + (port-remove-request socket)))) irc-handler)) (define default-line-handler (make-handle-line))