Changeset 89 for branches/home/psmith


Ignore:
Timestamp:
02/17/07 23:42:28 (18 years ago)
Author:
psmith
Message:

Hopefully fixes epollhup not handled properly on close

Location:
branches/home/psmith/restructure/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified branches/home/psmith/restructure/src/event/epoll-cffi.lisp

    r15 r89  
    5858    (pad :uint32))
    5959
     60;;See man epoll_ctl
     61;;See /usr/include/sys/epoll.h
     62
    6063  (defconstant +epoll-event-size+ #.(+ 4 4 4))
    6164
    6265  (defconstant +epoll-in+ #x001)
    6366  (defconstant +epoll-out+ #x004)
     67  (defconstant +epoll-error+ #x008)
     68  (defconstant +epoll-hup+ #x010)
    6469  (defconstant +epoll-et+ #.(ash 1 31))
    6570
  • TabularUnified branches/home/psmith/restructure/src/event/epoll.lisp

    r84 r89  
    4141    (not (eql (logand event +epoll-out+) 0)))
    4242
     43  (defun error-event-p (event)
     44    (not (eql (logand event +epoll-error+) 0)))
    4345
     46  (defun hup-event-p (event)
     47    (not (eql (logand event +epoll-hup+) 0)))
    4448
    4549  (defun add-fd (event-queue fd mode &key (trigger :edge))
  • TabularUnified branches/home/psmith/restructure/src/event/event-notification.lisp

    r26 r89  
    2727(defpackage :event-notification (:use :cl :cffi :nio-compat)
    2828            (:export
    29              make-event-queue add-fd remove-fd poll-events poll-error read-event-p write-event-p))
     29             make-event-queue add-fd remove-fd poll-events poll-error read-event-p write-event-p error-event-p hup-event-p))
  • TabularUnified branches/home/psmith/restructure/src/io/async-fd.lisp

    r88 r89  
    9999                 (setf (read-ready state-machine) nil))
    100100                (t
    101                  (close-fd (read-fd async-fd))
     101                 (close-fd (read-fd state-machine))
    102102                 (error 'read-error :errno errno)))))
    103103       ((= new-bytes 0)
  • TabularUnified branches/home/psmith/restructure/src/io/nio-server.lisp

    r88 r89  
    148148                                                          (throw 'error-exit nil))))
    149149
    150                              (when (read-event-p event) (setf (read-ready async-fd) t))
    151                              (when (write-event-p event) (setf (write-ready async-fd) t)))))))))
     150                             (if (error-event-p event)
     151                                 (close-sm async-fd)
     152                                 (progn
     153                                   (when (read-event-p event) (setf (read-ready async-fd) t))
     154                                   (when (write-event-p event) (setf (write-ready async-fd) t)))))))))))
    152155
    153156;add outgoing sockets to event queue
  • TabularUnified branches/home/psmith/restructure/src/nio-logger/run-logging-client.lisp

    r88 r89  
    2626|#
    2727
    28 ;(push :nio-debug *features*)
     28(push :nio-debug *features*)
    2929(require :asdf)
    3030(require :nio-logger)
     
    4040        (lambda (condition hook)
    4141          (declare (ignore hook))
    42           (with-open-file (out (format nil "error-from-pid~A-thread-~A" (sb-posix:getpid) (sb-thread:thread-name sb-thread:*current-thread*))
     42          (with-open-file (out (format nil "client-error-from-pid~A-thread-~A" (sb-posix:getpid) (sb-thread:thread-name sb-thread:*current-thread*))
    4343                               :direction :output :external-format :utf-8 :if-exists :append :if-does-not-exist :create)
    4444            (format out "Toplevel catch (~A):~%" (nio-utils:get-readable-time))
  • TabularUnified branches/home/psmith/restructure/src/nio-logger/run-logging-server.lisp

    r87 r89  
    2626|#
    2727
    28 ;(push :nio-debug *features*)
     28(push :nio-debug *features*)
    2929(require :asdf)
    3030(require :nio-logger)
     
    3434      (allowed-ips-filename (fourth sb-ext:*posix-argv*)))
    3535  (format t "Starting logging Server with ~A ~A ~A~%" listen-ip out-file allowed-ips-filename)
     36
     37  (setf sb-ext:*invoke-debugger-hook*
     38        (lambda (condition hook)
     39          (declare (ignore hook))
     40          (with-open-file (out (format nil "server-error-from-pid~A-thread-~A" (sb-posix:getpid) (sb-thread:thread-name sb-thread:*current-thread*))
     41                               :direction :output :external-format :utf-8 :if-exists :append :if-does-not-exist :create)
     42            (format out "Toplevel catch (~A):~%" (nio-utils:get-readable-time))
     43            (format out "~A - ~A~%" (type-of condition) condition)
     44            (sb-debug:backtrace 20 out))
     45          (quit)))
     46
     47
     48
    3649  (nio-logger:run-logging-server listen-ip out-file allowed-ips-filename))
Note: See TracChangeset for help on using the changeset viewer.