Weird problem when using tcp sockets in HTTP mode

Mihai Balea <>
Fri Jul 17 23:22:40 CEST 2009


Hi all,

I'm hitting a weird problem and I'm wondering if it is a bug somewhere  
in the system libs.

I'm running R13B01. I am opening a tcp socket in http mode and  
apparently the HttpUri returned by gen_tcp:recv contains only the  
first key-value pair of the query string.

Here's the code I'm running:

-module(h).
-compile(export_all).

run() ->
     {ok, LS} = gen_tcp:listen(6969, [{packet, http}, {active, false},  
{reuseaddr, true}, list]),
     {ok, S} = gen_tcp:accept(LS),
     do_recv(S).

do_recv(S) ->
     {ok, Packet} = gen_tcp:recv(S, 0),
     io:format("~p\n", [Packet]),
     do_recv(S).

Here's the query:
curl -v http://localhost:6969/foo/bar?a=1&b=2&c=3

And the output of the program:
3> h:run().
{http_request,'GET',{abs_path,"/foo/bar?a=1"},{1,1}}
{http_header,24,'User-Agent',undefined,
              "curl/7.19.5 (i386-apple-darwin9.7.0) libcurl/7.19.5  
zlib/1.2.3"}
{http_header,14,'Host',undefined,"localhost:6969"}
{http_header,8,'Accept',undefined,"*/*"}
http_eoh

Am I doing something wrong or is this indeed a bug?

Thanks,
Mihai



More information about the erlang-questions mailing list