AnyEvent and Strawberry perl issue
Christian Walde
walde.christian at gmail.com
Sun Mar 15 02:33:46 CET 2015
I'd rather not involve myself with this, but it was suggested to me
that dropping the relevant bits of information on the mailing list
explicitly would be a good idea.
The point was brought up that Perl considers EINPROGRESS and
WSAEINPROGRESS equal. I am unclear exactly how the equality mapping is
brought about and what kind of real world effects this can have.
I also know there is at least one as-of-yet uninvolved person with time
slated for investigating the matter.
That said, maybe this conversation can be helped a bit by making the
actual and obvious difference explicit on the mailing list, and asking
the obvious question. As such:
Google: EINPROGRESS linux
http://man7.org/linux/man-pages/man2/connect.2.html
> EINPROGRESS
>The socket is nonblocking and the connection cannot be completed
> immediately. It is possible to select(2) or poll(2) for completion by
> selecting the socket for writing. After select(2) indicates
> writability, use getsockopt(2) to read the SO_ERROR option at level
> SOL_SOCKET to determine whether connect() completed successfully
> (SO_ERROR is zero) or unsuccessfully (SO_ERROR is one of the usual
> error codes listed here, explaining the reason for the failure).
Google: WSAEINPROGRESS msdn
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx
> WSAEINPROGRESS
>
> Operation now in progress.
> A blocking operation is currently executing. Windows Sockets only
> allows a single blocking operation—per- task or thread—to be
> outstanding, and if any other function call is made (whether or not it
> references that or any other socket) the function fails with the
> WSAEINPROGRESS error.
Now, i have never used any of this, and do not know the details of the
systems behind it, so i can only read the words as offered and interpret
them naively.
The most striking difference is that one describes something that's
non-blocking, and the other something that's blocking. Further from what
i interpret EINPROGRESS to mean is that a non-blocking unix socket is
busy with itself; while WSAEINPROGRESS indicates that a windows socket
is actively being blocked by something using it in the same task or
thread that called connect.
To my amateur naive reading these two are not simply slightly different,
but seem to describe wildly different situations.
So the obvious question is: Did i misread? Are there non-obvious details
that make it okay? On exactly what basis was the decision made that
these two can be equivalent?
God damn, way too many words.
--
With regards,
Christian Walde
More information about the anyevent
mailing list