Subject: | RE: PoCo::Client::HTTP dies . . . |
Date: | Thu, 29 Sep 2005 11:04:47 -0800 |
To: | "Rocco Caputo" <rcaputo [...] pobox.com> |
From: | "Ovod-Everett, Toby" <tovod-everett [...] alascom.att.com> |
It's going to take me a minute to get a tree set up with the latest POE,
POE::Component::Client::HTTP, POE::Component::Client::Keepalive, etc.
(looks like it now requires POE::Component::Client::DNS, even though
that isn't mentioned in the Makefile.pl or the docs:).
In the meantime, the attached code successfully downloads whatever URL
is passed on the command line. However, if the URL references an IP
address that is not active, I get:
expected a request ID, but there is none at
C:/Perl/site/lib/POE/Component/Client/HTTP.pm line 653.
--Toby Ovod-Everett
Show quoted text
-----Original Message-----
From: Rocco Caputo [mailto:rcaputo@pobox.com]
Sent: Wednesday, September 28, 2005 5:14 PM
To: Ovod-Everett, Toby
Subject: Re: PoCo::Client::HTTP dies . . .
On Mar 18, 2005, at 21:46, Ovod-Everett, Toby wrote:
> I've seen a few old threads about PoCo::Client::HTTP dying. The
> error still seems to be present in version 0.65. The error seems
> to be that poco_weeble_timeout and poco_weeble_connect_error are
> both added to the queue. I'm seeing:
>
> request 1 is timed out
>
> request 1 is wheel 2
>
> wheel 2 encountered connect error 10065: Unknown error
>
> expected a request ID, but there is none at
> POE::Component::Client::HTTP 653
>
> The quick patch is to return in poco_weeble_connect_error instead
> of calling die. After making that adjustment, the problem
> disappears. The client still gets a call indicating that there was
> an error initiating the HTTP connection from poco_weeble_timeout.
> I'm running this under Windows XP, which may have something to do
> with it. It appears that the initial TCP connection blocks under
> XP, so I'm _guessing_ what happens is that poco_weeble_timeout is
> sitting on the queue for 20 (presuming a Timeout value of 20)
> seconds in the future, the initial connect call blocks and then
> gets an error returned, so it appends poco_weeble_connect_error to
> the queue. It is, however, now more than 20 seconds in the future,
> so poco_weeble_timeout gets called first, it deletes the
> wheel_to_request entry, and suddenly we have a problem.
I apologize for the lateness of this reply.
POE::Component::Client::HTTP has undergone major revisions since
0.65. The biggest change has been HTTP 1.1 support, which required
updating all the connection code to support keep-alive. I would not
be surprised if your timeout race condition has been fixed. Without
a test case, however, I cannot say for sure.
--
Rocco Caputo - http://poe.perl.org/
Message body is not shown because sender requested not to inline it.