Hello,
I have a few questions...
On a busy server, sometimes a connection to a server aborts before the accept
returns.
An example is:
client calls connect, server gets SYN, sends back SYN,ack, connect returns
in the client, the connection is ESTABLISHED, then some time passes, the
client sends RST, and *then* the server calls accept. At this point the
accept returns ECONNABORTED (well, it depends on the unix distro, actually).
Does iolib internally catch this and restart the accept, is there a
signaled condition? what does it do?
Also, related, how does iolib, or the underlying implementation's accept, deal
with EINTR in the various calls? Especially with a nonblocking connect, which
usually requires a trip through select() in order to deal with the socket?
And, finally, is there any stable interface to the abstracted multiplexer
so I can do nonblocking i/o between multiple clients? If not, the only
solution left to me is threading, and I'm not sure how sbcl scales to
ten thousand+ threads. Instead of the callback method, is there a "give a
pile of read/write/except sockets to a fake select which implements the
select semantic with real select/pool/kqueue"? Additionally, is there
any means to do nonblocking i/o on *standard-input* or *standard-output*?
Thank you.
-pete