agenda: Rename %8sync (and %8sync-*) to 8sync (and 8sync-*)
[8sync.git] / 8sync / systems / irc.scm
index 1333c3c5868424a19f12ee1812c06063dfd3554a..c2fe8e34f74403d48ca11b26d4655f1dd13db449 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))