[erlang-questions] erlang http tcp_closed problem

Zandra Hird zandra@REDACTED
Wed Feb 18 15:57:56 CET 2015


Hi,

It might have to do with some internal buffer limitation (see doc 
http://www.erlang.org/doc/man/inet.html), so you can try to set 
packet_size to big enough to handle the large cookie header and see if 
it helps.

/ Zandra


On 2015-02-12 10:36, Przemysław Wycisk wrote:
> The reason of that behaviour was option packet_size on socket. Default 
> set of this option ({packet_size, 0}) should mean no size (line size 
> in http) limit shouldn't it?, but packets were dropped because of 
> large cookie header.
> I consider it as a bug, and also i think that if line size limit in 
> http socket occurs i should get http_error instead of tcp_closed, it's 
> quite confusing.
>
> On Sun, Feb 8, 2015 at 7:25 PM, Przemysław Wycisk 
> <p.wycisk@REDACTED <mailto:p.wycisk@REDACTED>> wrote:
>
>     I've got problem with using erlang active http socket.
>
>     I receive msgs like that:
>
>     ok = inet:setopts(Sock,[{active, true}]),
>     receive
>     {http, Sock, {http_request, HttpMethod, {abs_path, Path},
>     _HttpVersion}} ->
>     Headers = getHeaders(Sock),
>                             %more code
>
>     and then headers like that:
>
>     getHeaders(Sock, Headers) ->
>     receive
>     {http, Sock, {http_header, _Num, 'Content-Length', _, Value}} ->
>     NewHeaders = Headers#'headers'{contentLength = Value},
>     getHeaders(Sock, NewHeaders);
>     {http, Sock, {http_header, _Num, 'Host', _, Value}} ->
>     NewHeaders = Headers#'headers'{host = Value},
>     getHeaders(Sock, NewHeaders);
>     {http, Sock, {http_header, _Num, 'User-Agent', _, Value}} ->
>     NewHeaders = Headers#'headers'{userAgent = Value},
>     getHeaders(Sock, NewHeaders);
>     %more headers here
>     %
>
>     {http, Sock, {http_error, Error}} ->
>     ?LOG_INFO("protocol", "http returned error with reason:~p~n",
>     [Error]),
>     exit(normal);
>     {http, Sock, http_eoh} ->
>     Headers;
>     {tcp_closed, Sock} ->  %<a mark>
>     ?LOG_INFO("connection", "Socket ~w closed by client", [Sock]),
>     exit(normal);
>     _Else ->
>     getHeaders(Sock, Headers)
>     end.
>
>
>     Normally it works fine, packets and headers are received from
>     browser and everyone is happy, but there is a case, when a browser
>     sends a request, and then i get "tcp_closed" in place where <a
>     mark> is placed, in the middle of receiving headers.
>
>     This behaviour is strange for me, because it never happens in
>     incognito mode. That could mean that bowsers cache is involved in
>     the problem, but how?
>
>     Anyone had the same problem? Anyone could help? I would be grateful.
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150218/f6d29ee1/attachment.htm>


More information about the erlang-questions mailing list