cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: Error CURLE_GOT_NOTHING(52) under http GET load test

From: Gustaf Hui <ghui_at_voicegenie.com>
Date: Mon, 17 Jun 2002 10:51:50 -0400

The request doesn't seem to get to the proxy, I am guesing that the request
might not be sent probably or not sent at all, so nothing is received.
Could the socket somehow got closed during this request?

Gustaf

----- Original Message -----
From: "Daniel Stenberg" <daniel_at_haxx.se>
To: "Gustaf Hui" <ghui_at_voicegenie.com>
Cc: "libcurl Mailing list" <curl-library_at_lists.sourceforge.net>
Sent: Friday, June 14, 2002 7:19 AM
Subject: Re: Error CURLE_GOT_NOTHING(52) under http GET load test

> On Thu, 13 Jun 2002, Gustaf Hui wrote:
>
> > I am using the multi interface to perform http GET requests through a
proxy
> > (Apache 1.3.24), running on Red Hat 7.2, and I am consistently running
into
> > the same fetch error CURLE_GOT_NOTHING(52). For the last load test I
did,
> > this error happened 4 times out of ~240000 requests, and they seem to
occur
> > randomly with respect to time.
>
> Oh! :-( This is of course not good, and a heck of a problem to search
for...
>
> > First the request is prepared (exactly the same way for all requests)
with a
> > easy handle and added to a multi handle. Then to initiate the request,
> > curl_multi_perform() is called within a loop,
> > while ( CURLM_CALL_MULTI_PERFORM == status )
> > {
> > status = curl_multi_perform(m_CUrlMultiHandle, &m_nActiveHandle);
> > }
>
> Is this actually a wise loop? I mean, there are cases in which
> curl_multi_perform() doesn't return CURLM_CALL_MULTI_PERFORM... (No, it is
> probably not related to the problem you're seeing.)
>
> > and unlike the normal cases, the fetch is completed within this loop.
The
> > logs I get in this loop are:
> > 2002-06-13 06:37:22.253| Re-using existing connection! (#0)
> > 2002-06-13 06:37:22.253| Connected to [re-used] (127.0.0.1) port
8080
> > 2002-06-13 06:37:22.254| Connection #0 left intact
> > And the easy handle return code is CURLE_GOT_NOTHING.
>
> Ok, so let's track this backwards from the point where it finds out and
sets
> the CURLE_GOT_NOTHING return code. Insert some suitable extra debug code
> somewhere along this chain:
>
> The CURLE_GOT_NOTHING return code is set in Curl_http_done(), which is
called
> after a supposed (single) HTTP transfer from Curl_done(), using the
function
> pointer conn->curl_done()).
>
> This gets called from multi.c:319, when leaving the CURLM_STATE_PERFORM
state
> for the single easy handle. That is made when Curl_readwrite() says it is
> "done". It considers itself done when the 'keepon' struct field is
cleared.
> The 'keepon' clears its read-bit KEEP_READ (as you're downloading here)
when
> reading a 0 or -1 from the socket...
>
> > I have checked the proxy access log, and the proxy doesn't seem to
receive
> > anything for this particular request.
>
> You mean no request being sent to it or no data being received?
>
> --
> Daniel Stenberg -- curl groks URLs -- http://curl.haxx.se/
>
>
>
>
> _______________________________________________________________
>
> Don't miss the 2002 Sprint PCS Application Developer's Conference
> August 25-28 in Las Vegas -
http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink
>
>

_______________________________________________________________

Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
Received on 2002-06-17