[Fwd: http client hell]

Ingela Anderton <>
Wed Dec 8 16:30:13 CET 2004


blaguehubert wrote:
> I'm using inets shipped with Erlang/OTP10.
This is a known bug in inets-4.0 that appears when
the http response is chunk decoded. It has already been fixed and
patched for commercial customers and will be part of the next open
source release.

> I tried your fixed version, but I have the same error with some websites.
I only fixed the test program!  

> Here is the full error message:
> 5> test:req("http://www.flipcode.com").
> 
> =ERROR REPORT==== 8-Dec-2004::14:15:33 ===
> ** Generic server <0.55.0> terminating
> ** Last message in was {tcp,#Port<0.134>,
>                             
> <<72,84,84,80,47,49,46,49,32,50,48,48,32,79,75,13,10,68,97,116,101,58,32,87,101,100,44,32,48,56,32,68,101,99,32,50,48,48,52,32,49,53,58,48,51,58,51,57,32,71,77,84,13,10,83,101,114,118,101,114,58,32,65,112,97,99,104,101,47,49,46,51,46,50,55,32,40,85,110,105,120,41,32,32,40,82,101,100,45,72,97,116,47,76,105,110,117,120,41,32,109,111,100,95,115,115,108,47,50,46,56,46,49,50,32,79,112,101,110,83,83,76,47,48,46,57,46,54,98,32,68,65,86,47,49,46,48,46,51,32,80,72,80,47,52,46,49,46,50,32,109,111,100,95,112,101,114,108,47,49,46,50,54,13,10,67,111,110,110,101,99,116,105,111,110,58,32,99,108,111,115,101,13,10,84,114,97,110,115,102,101,114,45,69,110,99,111,100,105,110,103,58,32,99,104,117,110,107,101,100,13,10,67,111,110,116,101,110,116,45,84,121,112,101,58,32,116,101,120,116,47,104,116,109,108,13,10,13,10,102,101,55,13,10,60,104,116,109,108,62,10,60,104,101,97,100,62,60,116,105,116,108,101,62,102,108,105,112,99,111,100,101,32,45,32,68,101,118,101,108,111,112,109,101,110,116,32,78,101,!
11!
> 9,115,60,47,116,105,116,108,101,62,10,60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,62,10,10,10,97,46,109,101,110,117,108,105,110,107,58,108,105,110,107,32,32,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,58,118,105,115,105,116,101,100,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,58,97,99,116,105,118,101,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,10,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,108,105,110,107,32,32,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,118,105,115,105,116,101,100,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,97,99,116,105,118,101,32,32,123,99,111,108,111,114,58,32,35,98,57,102,1!
02!
> ,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,101,109,112
> 07,101,109,112,116,121,58,118,105,115,105,116,101,100,44,32,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,97,99,116,105,118,101,32,123,116,101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,32,110,111,110,101,125,10,10,97,46,111,114,97,110,103,101,108,105,110,107,58,108,105,110,107,32,32,32,32,123,32,99,111,108,111,114,58,35,70,70,65,66,48,52,59,32,125,10,97,46,111,114,97,110,103,101,108,105,110,107,58,118,105,115,105,116,101,100,32,123,32,99,111,108,111,114,58,35,70,70,65,66,48,52,59,32,125,10,97,46,111,114,97,110,103,101,108,105,110,107,58,97,99,116,105,118,101,32,32,123,32,99,111,108,111,114,58,35,70,70,65,66,48,52,59,32,125,10,10,97,46,112,97,108,101,103,114,101,101,110,58,108,105,110,107,32,32,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,112,97,108,101,103,114,101,101,110,58,118,105,115,105,116,101,100,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,112,97,108,101,103,114,101,101,110,58,97!
,9!
> 9,116,105,118,101,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,10,97,46,98,108,117,101,108,105,110,107,58,108,105,110,107,32,32,32,32,123,32,99,111,108,111,114,58,35,48,51,70,48,70,70,59,32,125,10,97,46,98,108,117,101,108,105,110,107,58,118,105,115,105,116,101,100,32,123,32,99,111,108,111,114,58,35,48,51,70,48,70,70,59,32,125,10,97,46,98,108,117,101,108,105,110,107,58,97,99,116,105,118,101,32,32,123,32,99,111,108,111,114,58,35,48,51,70,48,70,70,59,32,125,10,10,97,46,115,111,102>>}
> ** When Server state == {state,{request,
>                                    #Ref<0.0.0.261>,
>                                    <0.36.0>,
>                                    0,
>                                    http,
>                                    {"www.flipcode.com",80},
>                                    "/",
>                                    [],
>                                    get,
>                                    {http_request_h,
>                                        undefined,
>                                        "keep-alive",
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        "www.flipcode.com",
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        [],
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        "0",
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        undefined,
>                                        []},
>                                    {[],[]},
>                                    
> {http_options,infinity,true,[],false,false}},
> 
>                                {tcp_session,
>                                    {{"www.flipcode.com",80},<0.55.0>},
>                                    false,
>                                    http,
>                                    #Port<0.134>,
>                                    1},
>                                undefined,
>                                undefined,
>                                undefined,
>                                {http_response,parse,[nolimit]},
>                                {[],[]},
>                                true,
>                                [],
>                                nolimit,
>                                nolimit}
> ** Reason for termination ==
> ** {{badmatch,{noreply,{state,{request,
>                                   #Ref<0.0.0.261>,
>                                   <0.36.0>,
>                                   0,
>                                   http,
>                                   {"www.flipcode.com",80},
>                                   "/",
>                                   [],
>                                   get,
>                                   {http_request_h,
>                                       undefined,
>                                       "keep-alive",
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       "www.flipcode.com",
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       [],
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       "0",
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       undefined,
>                                       []},
>                                   {[],[]},
>                                   
> {http_options,infinity,true,[],false,false}},
>                               {tcp_session,
>                                   {{"www.flipcode.com",80},<0.55.0>},
>                                   false,
>                                   http,
>                                   #Port<0.134>,
>                                   1},
>                               {"HTTP/1.1",200,"OK"},
>                               {http_response_h,
>                                   undefined,
>                                   "close",
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   "chunked",
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   "0",
>                                   undefined,
>                                   undefined,
>                                   undefined,
>                                   "text/html",
>                                   undefined,
>                                   undefined,
>                                   [{"date","Wed, 08 Dec 2004 15:03:39 GMT"},
>                                    {"server",
>                                     "Apache/1.3.27 (Unix)  
> (Red-Hat/Linux) mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 
> mod_perl/1.26"}]},
>                               undefined,
>                               {http_chunk,
>                                   decode_data,
>                                   [4071,
>                                    
> <<60,104,116,109,108,62,10,60,104,101,97,100,62,60,116,105,116,108,101,62,102,108,105,112,99,111,100,101,32,45,32,68,101,118,101,108,111,112,109,101,110,116,32,78,101,119,115,60,47,116,105,116,108,101,62,10,60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,62,10,10,10,97,46,109,101,110,117,108,105,110,107,58,108,105,110,107,32,32,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,58,118,105,115,105,116,101,100,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,58,97,99,116,105,118,101,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,10,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,108,105,110,107,32,32,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,118,105,115,105,116,101,100,32,123,99,111,108,111,114,58,32,!
35!
> ,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,97,99,116,105,118,101,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,108,105,110,107,44,32,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,118,105,115,105,116,101,100,44,32,97,46,109,101,110,117,108,105,110,107,101,109,112,116,121,58,97,99,116,105,118,101,32,123,116,101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,32,110,111,110,101,125,10,10,97,46,111,114,97,110,103,101,108,105,110,107,58,108,105,110,107,32,32,32,32,123,32,99,111,108,111,114,58,35,70,70,65,66,48,52,59,32,125,10,97,46,111,114,97,110,103,101,108,105,110,107,58,118,105,115,105,116,101,100,32,123,32,99,111,108,111,114,58,35,70,70,65,66,48,52,59,32,125,10,97,46,111,114,97,110,103,101,108,105,110,107,58,97,99,116,105,118,101,32,32,123,32,99,111,108,111,114,58,35,70,70,65,66,48,52,59,32,125,10,10,97,46,112,97,108,!
10!
> 1,103,114,101,101,110,58,108,105,110,107,32,32,32,32,123,99,111,108,11
> ,103,114,101,101,110,58,118,105,115,105,116,101,100,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,97,46,112,97,108,101,103,114,101,101,110,58,97,99,116,105,118,101,32,32,123,99,111,108,111,114,58,32,35,98,57,102,102,100,48,59,32,125,10,10,97,46,98,108,117,101,108,105,110,107,58,108,105,110,107,32,32,32,32,123,32,99,111,108,111,114,58,35,48,51,70,48,70,70,59,32,125,10,97,46,98,108,117,101,108,105,110,107,58,118,105,115,105,116,101,100,32,123,32,99,111,108,111,114,58,35,48,51,70,48,70,70,59,32,125,10,97,46,98,108,117,101,108,105,110,107,58,97,99,116,105,118,101,32,32,123,32,99,111,108,111,114,58,35,48,51,70,48,70,70,59,32,125,10,10,97,46,115,111,102>>,
>                                    {nolimit,<<>>,4071,nolimit}]},
>                               {[],[]},
>                               true,
>                               [],
>                               nolimit,
>                               nolimit}}},
>     [{httpc_handler,handle_http_body,2},
>      {gen_server,handle_msg,6},
>      {proc_lib,init_p,5}]}
> 
> Ingela Anderton wrote:
> 
> >blaguehubert wrote:
> >  
> >
> >>I'm trying to use the http:request function, but I randomly get this
> >>
> >>horrible message before it crash my program:
> >>
> >>*=ERROR REPORT==== 7-Dec-2004::23:39:22 ===
> >>** Generic server <0.64.0> terminating
> >>** Last message in was {tcp_closed,#Port<0.137>}
> >>** When Server state == {state,{request,
> >>                                  #Ref<0.0.0.822>,
> >>                                  <0.114.0>,
> >>                                  0,
> >>                                  http,
> >>                                  {"perso.efrei.fr",80},
> >>                                  "/~colombi//",
> >>                                  [],
> >>                                  get,
> >>                                  {http_request_h,
> >>                                      undefined,
> >>                                      "keep-alive",
> >>                                      undefined,
> >>                                      undefined,
> >>                                      undefined,
> >>                                      undefined,
> >>
> >>etc...
> >>    
> >>
> >You cut out the most interesting part e.i. the reason for the
> >termination. That the tcp port was closed might be perfectly normal
> >as many servers close the connection to indicate that the whole answer
> >has been sent instead of sending a length indicator.
> >Which version of intes are you using?
> >
> >  
> >
> >>Here is my code :
> >>*
> >>req(Url) ->
> >>case (catch req(Url,10)) of
> >>       {ok, Body} ->
> >>               {ok, Body};
> >>       _ ->
> >>               error
> >>       end.
> >>
> >>req(Url, NbTry) ->
> >>{ok, RequestId} = http:request(get, {Url, []}, [], [{sync, false}]),
> >>receive
> >>{http, {RequestId, Result}} ->
> >>       {N, Header, Body} = Result,
> >>       {ok, binary_to_list(Body)}
> >>after 60000 ->
> >>       if
> >>               NbTry) > 0 ->
> >>                       req(Url, NbEssais-1);
> >>               true ->
> >>                       error
> >>       end
> >>end.
> >>
> >>Like you can see, I use catch statement and timeout because I thought it 
> >>was only an exception, but it seems more serious... 
> >>    
> >>
> >
> >I fixed your code above as it did not compile. And this is the result I get
> >every time I try it with intes-4.0.1
> >
> >3> test:req("http://perso.efrei.fr:80/~colombi/").
> >{ok,"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n  <title>No title</title>\n  <meta name=\"generator\" content=\"amaya 8.5, see http://www.w3.org/Amaya/\" />\n</head>\n\n<body>\n<p>un lien de test: <a href=\"./ici.html\">ici</a></p>\n</body>\n</html>\n"}
> >
> >Your code fixed:
> >
> >-module(test).
> >
> >-export([req/1]).
> >
> >req(Url) ->
> >    case (catch req(Url,10)) of
> >	{ok, Body} ->
> >	    {ok, Body};
> >	_ ->
> >	    error
> >    end.
> >
> >req(Url, NbTry) ->
> >    {ok, RequestId} = http:request(get, {Url, []}, [], [{sync, false}]),
> >    receive
> >	{http, {RequestId, Result}} ->
> >	    {_N, _Header, Body} = Result,
> >	    {ok, binary_to_list(Body)}
> >    after 60000 ->
> >	    if
> >		NbTry > 0 ->
> >                       req(Url, NbTry-1);
> >               true ->
> >                       error
> >       end
> >end.
> >
> >  
> >
> 

-- 
/Ingela

Ericsson AB - OTP team









More information about the erlang-questions mailing list