[erlang-questions] Are you using {packet, http} ?

Paulo Sérgio Almeida psa@REDACTED
Wed Jul 16 12:34:37 CEST 2008

Sverker Eriksson wrote:
> A message from the OTP team:
> There is an undocumented socket packet mode that provides HTTP parsing. 
> We are planning to make this packet mode official and possibly also 
> change the format of the tuples returned in this mode. One current big 


I use {active, once}, but will have no problem changing the code to 
adapt to the new message format.

As you are making it official, here is something you may consider as 
well, if not now, maybe for a future version: supporting the "binary" 
option. As it is now, the binary option is ignored (at least when 
returning the path and headers, which is almost all that matters in the 
most common case, "GET"). This means that several lists of chars will be 
created which (specially in 64 bit architectures) may use several KBytes 
per request, just for the headers. If binaries were returned, memory 
consumption would be better and it would make less pressure on GC (I 
guess). Considering that pattern matching on binaries in nice and 
efficient nowadays, it would be an interesting feature.

A possibility would be the implementation to return sub-binaries 
pointing to the single block in the memory in the common case when the 
request arrives in a single TCP packet. It would be very efficient. The 
programmer would have to be aware of the implications, and not get hold 
of sub-binaries. But I see this as a minor issue. Headers are typically 
either ignored or acted upon to decide something and discarded soon 
afterwards, not stored for the long term (is this true?).

In any case chosing "binary" is optional anyway, we can always choose 
getting lists.


More information about the erlang-questions mailing list