Have tracked the problem down to this point:

mio_wsasync.h: 68

    static void _mio_free_fd(mio_t m, mio_priv_fd_t priv_fd)            \
    {                                                                   \
        priv_fd->next_free = MIO(m)->next_free;                         \
        priv_fd->mio_fd.fd = 0;                                         \
        MIO(m)->next_free = priv_fd;                                    \
    }                                                                   \


This function appears to try to append the old closed socket to a
linked list of free sockets.  When the new connection tries to use
this socket, it has trouble.  Once the next connection connects,
however, it will not use that socket as it is still in use, so it will
work.  Not sure why the socket that is being appended is broken, but
if this function is not called (at mio_impl.h: 267), the program works
"fine."  It may not be reusing sockets, but everything else works.

Hope this helps.

-Dan

On Jan 23, 2008 9:26 AM, Dan Hulme <[EMAIL PROTECTED]> wrote:
> You might also mention that the win32 is broken on 2.1.21 (doesn't compile).
>
>
> On Jan 23, 2008 9:16 AM, Tomasz Sterna <[EMAIL PROTECTED]> wrote:
> > On Śr, 2008-01-23 at 08:48 -0800, Dan Hulme wrote:
> > > Am I correct in assuming this means it uses wsasync?
> >
> > I guess so.
> > That could mean, that there is a bug in wsasync implementation.
> > I  will talk to Win32 build maintainer about.
> >
> >
> > --
> >
> >   /\_./o__ Tomasz Sterna
> >  (/^/(_^^' http://www.xiaoka.com/
> > ._.(_.)_   im:[EMAIL PROTECTED]
> >
> >
>

Reply via email to