
Hi, Anton No, the form passed to SOCKET-STATUS *DO NOT* depend on READY-ONLY (note: it's READY-ONLY, not READ-ONLY). Actually, all your patch does was the status updating "after" CLISP's SOCKET-STATUS returned. This means, if a socket do have some inputs are waiting for read, CLISP's SOCKET-STATUS can definitely normally return, even without your patch. As far as I know, many USOCKET users (or packages) were using WAIT-FOR-INPUT in a trivial way (including me): they send something to one socket, and call WAIT-FOR-INPUT on it (without READY-ONLY), never care the return value or the STATE slot of usocket object, and the buggy W-F-I just works for many years ... until Hunchentoot users start to run it on CLISP ... On the other hand, what you patched is more valuable when (:READY-ONLY T) was added when calling W-F-I. Your patch caused the STATE slot from multiple usocket objects were updated correctly, and W-F-I will just return those sockets who can be read (this logic appears in the implementation of W-F-I itself in usocket.lisp, code shared by all backends). So, I think your patch is just enough. Thanks again! --binghe 在 2011-4-10,23:16, Anton Vodonosov 写道:
10.04.2011, 18:39, "Chun Tian (binghe)" <binghe.lisp@gmail.com>:
Hi, Anton
Thank you very much for looking into this issue and finally fixed it! I believe this also closed another open issue reported by other users on Hunchentoot mailing list, in which they have to disable the use of READY-ONLY argument when calling WAIT-FOR-INPUT.
Dos the form of the argument passed to the CLISP function socket:socket-status depend on the usocket parameter READ-ONLY? (the variable REQUEST-LIST in the WAIT-FOR-INPUT-INTERNAL code)
I mean, if changing the READ-ONLY argument made the old code working, i.e. (pop status-list) was sufficient, then the new code should take this into account.
What is the value of the REQUEST-LIST variable?
Best regards, - Anton