mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-02 07:30:55 -08:00
Proper closing of sockets involves closing both the stream and the file descriptor.
This commit is contained in:
parent
8eb3306930
commit
7fb94bf9b7
1 changed files with 6 additions and 9 deletions
|
|
@ -381,15 +381,12 @@ SB-SYS:MAKE-FD-STREAM."))
|
|||
;; reassigned to some other file, and closing it would be bad
|
||||
|
||||
(let ((fd (socket-file-descriptor socket)))
|
||||
(cond ((eql fd -1) ; already closed
|
||||
nil)
|
||||
((slot-boundp socket 'stream)
|
||||
(close (slot-value socket 'stream)) ;; closes fd
|
||||
(setf (slot-value socket 'file-descriptor) -1)
|
||||
(slot-makunbound socket 'stream))
|
||||
(t
|
||||
(if (= (socket-close-low-level socket) -1)
|
||||
(socket-error "close"))))))
|
||||
(unless (eql fd -1) ; already closed
|
||||
(when (slot-boundp socket 'stream)
|
||||
(close (slot-value socket 'stream)) ;; closes fd
|
||||
(slot-makunbound socket 'stream))
|
||||
(if (= (socket-close-low-level socket) -1)
|
||||
(socket-error "close")))))
|
||||
|
||||
;; FIXME: How bad is manipulating fillp directly?
|
||||
(defmethod socket-receive ((socket socket) buffer length
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue