On Fri, Aug 17, 2001 at 05:53:42PM -0400, Kirill wrote:
> The article seems to say that the problem is with the
> WSASocket() API only, not with the socket() API.
> Do you think Perl is using the WSA API internally?
> I wouldn't think so, because Winsock 2 is not installed
> with Win95, it needs to be installed separately.
>
> Also if this was the problem, then the patch for non-
> blocking connect that went into LWP::Parallel 2.51
> would also fail on WinNT. But I haven't yet heard
> about that happening. Could you please run
> LWP::Parallel and/or PoCo::Client::UserAgent tests
> on WinNT and tell me what happens?
There is no easy way to install LWP::Parallel on the machine I'm
using. I haven't found a PPM for it, and the CPAN shell requires
several utilities that I don't have. I did look at it on my local
machine, and your non-blocking patch to LWP::Parallel's http.pm
protocol looks identical to the code in SocketFactory.
With the ioctl() present in SocketFactory, connect() fails with error
10022 (invalid argument) on more recent systems. This is the problem
that was originally reported, and I've reproduced it on the test
machine.
When I comment out the ioctl() call, it works. Of course this means
that connect() is blocking. Bleah!
Maybe the problem is not with WSA_FLAG_OVERLAPPED, but the symptoms
are identical. Is there another reason why a non-blocking connect()
would fail with error 10022 but blocking connect() works? Except for
the ioctl(), the code is identical in both cases.
-- Rocco Caputo / [EMAIL PROTECTED] / poe.perl.org / poe.sourceforge.net