Date: | Mon, 24 Nov 2003 22:11:34 -0500 |
From: | Rocco Caputo <rcaputo [...] pobox.com> |
To: | bug-POE [...] rt.cpan.org |
CC: | s0lar [...] gmx.li |
Subject: | POSIX ETIMEDOUT not available in ActivePerl 5.8.1 |
<_SoLaR_> Your vendor has not defined POSIX macro ETIMEDOUT, used at
C:/Perl/P6/site/lib/OE/Component/Client/TCP.pm line 208
<dngor> So which version of Windows are you using?
<_SoLaR_> w2k
<_SoLaR_> as long i use one socked at a time it works okay
<_SoLaR_> if i use more sooner or later that error will apear
<_SoLaR_> but as i told it works well on linux
<_SoLaR_> even with 100-200 simultaneous connects
<dngor> Interesting. Sounds like ETIMEDOUT is only being exercised
when you get a connection error.
<_SoLaR_> yes
<_SoLaR_> and then all other sockets wait for this one
<dngor> Does this also give you the error:
perl -wle "use POSIX qw(ETIMEDOUT); print ETIMEDOUT"
<_SoLaR_> Your vendor has not defined POSIX macro ETIMEDOUT, used at -e
line 1
<dngor> Which version of Perl?
<_SoLaR_> 5.81
<_SoLaR_> newest
<dngor> I don't suppose you know the value of WSAETIMEDOUT
<dngor> Or a Perl module where I might get it.
<dngor> found it:
http://www.partware.com/ebooks/api/ref/other/winsockerror.html
So, ETIMEDOUT doesn't exist in POSIX, in ActivePerl 5.8.1. Neither do a
lot of other constants. It's gone to the point where we probably need a
POSIX portability module for MSWin32. It can pass POSIX values through
unscathed everywhere else.
I would love to move most of the hacks and workarounds for MSWin32 out
of the main body of code.
--
Rocco Caputo - rcaputo@pobox.com - http://poe.perl.org/