Chun Tian (binghe) wrote:
So, to make UNIX-FAST-SELECT wait for ever, both TIMEOUT-SECS and TIMEOUT-USECS must be NIL. I think your patch is right, that's a usocket bug.
Commited to trunk as r483, thanks very much!
Cool!
I did take a look at the source code of unix-fast-select. The thing that concerned me was,
(unless *interrupts-enabled* (note-dangerous-select))
under the T clause of the cond. Having looked at things a bit more closely now, I think I do understand better what this means.
Cheers, Chaitanya
--binghe
On 2008-12-24, at 01:13, Chaitanya Gupta wrote:
Hi,
On SBCL, providing :timeout NIL to wait-for-input returns immediately even when there is no input on any of the provided sockets (the documentation says it should wait indefinitely).
Attached is a patch (svn diff) which fixes this, but I am not very sure about how sb-unix:unix-fast-select works, so its be best if someone who knows better can review it before committing this patch. :)
Cheers, Chaitanya
Index: backend/sbcl.lisp
--- backend/sbcl.lisp (revision 482) +++ backend/sbcl.lisp (working copy) @@ -353,7 +353,7 @@ (1+ (reduce #'max (wait-list-%wait sockets) :key #'sb-bsd-sockets:socket-file-descriptor)) (sb-alien:addr rfds) nil nil
(when timeout secs) musecs)
(when timeout secs) (when timeout musecs)) (if (null count) (unless (= err sb-unix:EINTR) (error (map-errno-error err)))
usocket-devel mailing list usocket-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/usocket-devel
-- Chun Tian (binghe) NetEase.com, Inc. P. R. China