Changeset 67 for trunk


Ignore:
Timestamp:
08/21/04 21:48:10 (21 years ago)
Author:
Erik Huelsmann
Message:

Fix invalidating the socket descriptor on non-threaded SBCL.
Also remove the connection classes' server-socket slot (again).

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/command.lisp

    r50 r67  
    140140  (send-irc-message connection :quit message)
    141141  #+(and sbcl (not sb-thread))
    142   (sb-sys:invalidate-descriptor (sb-bsd-sockets:socket-file-descriptor
    143                                (server-socket connection)))
     142  (sb-sys:invalidate-descriptor (sb-sys:fd-stream-fd
     143                                        (server-stream connection)))
    144144  (close (server-stream connection)))
    145145
     
    250250(defun socket-stream (socket)
    251251  #+sbcl
    252   (values
    253    (sb-bsd-sockets:socket-make-stream socket
    254                                       :element-type 'character
    255                                       :input t
    256                                       :output t
    257                                       :buffering :none)
    258    socket)
     252  (sb-bsd-sockets:socket-make-stream socket
     253                                     :element-type 'character
     254                                     :input t
     255                                     :output t
     256                                     :buffering :none)
    259257  #+openmcl
    260258  socket)
     
    280278                     (logging-stream t))
    281279  "Connect to server and return a connection object."
    282   (multiple-value-bind (stream socket)
    283       (socket-connect server port)
    284     (let* ((user (make-user :nickname nickname
    285                             :username username
    286                             :realname realname))
    287            (connection (make-connection :server-stream stream
    288                                         :server-socket socket
    289                                         :client-stream logging-stream
    290                                         :user user
    291                                         :server-name server)))
     280  (let* ((stream (socket-connect server port))
     281         (user (make-user :nickname nickname
     282                          :username username
     283                          :realname realname))
     284         (connection (make-connection :server-stream stream
     285                                      :client-stream logging-stream
     286                                      :user user
     287                                      :server-name server)))
    292288    (nick connection nickname)
    293289    (user- connection (or username nickname) mode (or realname nickname))
    294290    (add-default-hooks connection)
    295     connection)))
     291    connection))
    296292
    297293(defmethod trace- ((connection connection) &optional (target ""))
  • TabularUnified trunk/protocol.lisp

    r60 r67  
    3434    :accessor server-stream
    3535    :documentation "Stream used to talk to the IRC server.")
    36    (server-socket
    37     :initarg :server-socket
    38     :accessor server-socket
    39     :initform nil)
    4036   (client-stream
    4137    :initarg :client-stream
     
    8177                             (server-name "")
    8278                             (server-stream nil)
    83                         (server-socket nil)
    8479                             (client-stream t)
    8580                             (hooks nil))
     
    8883                                   :server-name server-name
    8984                                   :server-stream server-stream
    90                                    :server-socket server-socket
    9185                                   :client-stream client-stream)))
    9286    (dolist (hook hooks)
     
    126120
    127121(define-condition invalidate-me (condition)
    128   ((socket :initarg :socket
    129            :reader invalidate-me-socket)
     122  ((stream :initarg :stream
     123           :reader invalidate-me-stream)
    130124   (condition :initarg :condition
    131125              :reader invalidate-me-condition)))
     
    141135              (irc-message-event message)
    142136              message))) ; needed because of the "loop while" in read-message-loop
    143       (stream-error (c) (setf read-more-p nil)
    144                     (signal 'invalidate-me :socket
    145                             (server-socket connection)
     137        (stream-error (c) (setf read-more-p nil)
     138                    (signal 'invalidate-me :stream
     139                            (server-stream connection)
    146140                            :condition c)))))
    147141
     
    171165                                          (read-message connection)
    172166                                        (invalidate-me (c)
    173                                           (sb-sys:invalidate-descriptor
    174                                            (invalidate-me-socket c))
     167                                          (sb-sys:invalidate-descriptor fd)
    175168                                          (format t "Socket closed: ~A~%"
    176169                                                  (invalidate-me-condition c)))))))))
Note: See TracChangeset for help on using the changeset viewer.