I think some of the remaining problems is caused by on the io code's
handling of connect. It uses one object of class connect_fd when
waiting for the connection to succeed or fail (it uses non-blocking
mode, so that it doesn't block in connect()), and creates a new object
of class io_fd when the connection is set up.

That loses some properties of the original object, in particular its
exception handler, and any references to it from some resources list.
It would be better to use a single object for the entire lifetime of
the fd.

I'm reworking i/o now, and in the process getting rid of most or all of the
subclasses of lsh_fd, and (hopefully) also cleaning it up a little.

/Niels

Reply via email to