cURL / Mailing Lists / curl-users / Single Mail

curl-users

Re: curl with 100 continue response

From: Anil Kumar <anil.omkar_at_gmail.com>
Date: Wed, 14 Jun 2006 17:28:41 +0530

Daniel,

As you said it turned out to be some stupid server side issues. sorrry for the
spam.

Thanks
Anil

On Wednesday 14 June 2006 13:34, Anil Kumar wrote:
> > Sorry, but how can a server send only a "100 continue" and still work
> > fine? A 100 continue header _implies_ that there is another status code
> > coming up so if there's nothing more coming after the 100 continue is
> > sounds like the server is messed up.
>
> Server did send "100 continue" + "200 ok" all the time.
> When curl does read on socket 100 + 200 might arrive at the same time or in
> successive reads.
>
> Look at the ltrace output for the examples i am talking about.
>
> ---------------------------------------------------------------------------
>---- here is the ltrace output when "100 continue" + "200 ok" were read at
> once by curl_easy_perform. In this case curl_easy_perform resumed.
> ---------------------------------------------------------------------------
>---- curl_easy_perform(0x8081a08, 138, 0, 0, 0xb7f5dc37 <unfinished ...>
> fwrite("HTTP/1.1 100 Continue\r\n", 1, 23, 0xb7c790e0HTTP/1.1 100 Continue
> ) = 23
> fwrite("\r\n", 1, 2, 0xb7c790e0
> ) = 2
> fwrite("HTTP/1.1 200 OK\r\n", 1, 17, 0xb7c790e0HTTP/1.1 200 OK
> ) = 17
> fwrite("Age: 0 \r\n", 1, 17, 0xb7c790e0Age: 0
> ) = 17
> fwrite("Date: Wed, 14 Jun 2006 07:30:59 "..., 1, 37, 0xb7c790e0Date: Wed,
> 14 Jun 2006 07:30:59 GMT
> ) = 37
> fwrite("Cache-Control: max-age=200 "..., 1, 42,
> 0xb7c790e0Cache-Control: max-age=200 ,public
> ) = 42
> fwrite("Connection: Keep-Alive\r\n", 1, 24, 0xb7c790e0Connection:
> Keep-Alive ) = 24
> fwrite("Content-Type: text/html\r\n", 1, 25, 0xb7c790e0Content-Type:
> text/html ) = 25
> fwrite("Content-Length: 5\r\n", 1, 19, 0xb7c790e0Content-Length: 5
> ) = 19
> fwrite("\r\n", 1, 2, 0xb7c790e0
> ) = 2
> fwrite("DONE\n", 1, 5, 0xb7c790e0DONE
> ) = 5
> <... curl_easy_perform resumed> )
> = 0
>
> ---------------------------------------------------------------------------
>---- here is the ltrace output when "100 continue" was read in first read by
> curl_easy_perform. In this case curl_easy_perform did NOT resume, if it
> resumed it would have got "200 ok"
> ---------------------------------------------------------------------------
>---- curl_easy_perform(0x8081a08, 138, 0, 0, 0xb7efcc37 <unfinished ...>
> fwrite("HTTP/1.1 100 Continue\r\n", 1, 23, 0xb7c180e0HTTP/1.1 100 Continue
> ) = 23
> fwrite("\r\n", 1, 2, 0xb7c180e0
> ) = 2
> ---------------------------------------------------------------------------
>----
>
>
> Thanks
> Anil
>
> On Wednesday 14 June 2006 12:38, Daniel Stenberg wrote:
> > On Tue, 13 Jun 2006, Anil Kumar wrote:
> > > Curl sent a request to server (without "Expect: 100-continue" header)
> > >
> > > When curl reads the buffer
> > > * If "100 continue" + "200 ok" were present in buffer -> things are
> > > fine * If only "100 continue" was present in buffer, curl doesnot seem
> > > to resume curl_easy_opt for reading more data from server.
> >
> > Sorry, but how can a server send only a "100 continue" and still work
> > fine? A 100 continue header _implies_ that there is another status code
> > coming up so if there's nothing more coming after the 100 continue is
> > sounds like the server is messed up.
> >
> > A HTTP/1.1 client is supposed to deal with the 100 code that way, and
> > (lib)curl does!
Received on 2006-06-14