[erlang-questions] gen_tcp very slow to fetch data

zabrane Mikael <>
Mon Nov 23 12:58:04 CET 2009


Hi Colm,

Your assumption that the initial gen_tcp:recv will give you a binary
> which always includes the full request headers is not correct.  If you
> are going down that road you would need to write code to check for the
> the header terminator and if it isn't present then buffer and read
> more until you have the terminator.


Ok. Finding headers terminator (teh double CRLF) isn't difficult.
What's difficult for me is to find the request end?
How can I know that I've read all data in my request (GET or POST)?


>  It isn't hard but it can be messy.
>

Joe's code helped me a lot with his reentrant parser. Thanks by the way.

Most erlang http servers these days use the {packet, http} socket
> option which is HTTP aware and which will read/parse headers one by
> one for you and will also indicate the end of the headers.
>

Lev Walkin introduced an example of his web server called yucan which uses
{packer, http_bin}:
http://lionet.livejournal.com/42016.html?thread=774432

Could someone explain the difference?


> mochiweb_http has a good example of how to use {packet, http} to read
> request headers :
>
>
> http://code.google.com/p/mochiweb/source/browse/trunk/src/mochiweb_http.erl


Thanks for the pointer

Regards
Zabrane


More information about the erlang-questions mailing list