[iolib-devel] accept question

Peter Keller psilord at cs.wisc.edu
Wed Jan 13 06:18:02 UTC 2010


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





More information about the iolib-devel mailing list