|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:email@example.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 -
Message body is not shown because sender requested not to inline it.