doc: Removing a sentence which made things tricky
[8sync.git] / 8sync / systems / irc.scm
index 7ab93169186451fdf936bf9edf96b129210fe3b3..f8e01b43c02a0f94309538a368be54cb6b966a8f 100755 (executable)
     (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))
              ;; reset buffer
              (set! buffer '())
              ;; run it
-             (%8sync (%run (handle-line
-                            socket
-                            ready-line
-                            username)))))
-          (_ #f))))
+             (%8sync (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))