[erlang-questions] gen_tcp:recv and hairloss

Colm Dougan <>
Sat Nov 8 18:27:26 CET 2008

On Sat, Nov 8, 2008 at 4:23 PM, Kevin <> wrote:
> loop(Sock, Fsm) ->
>    case gen_tcp:recv(Sock, 0, ?RECV_TIMEOUT) of %% this works!
>    {ok, Request} ->
>          ok = gen_tcp:controlling_process(Sock, Fsm), %% {error,not_owner}
>          ok = gen_fsm:send_event(Fsm, {Request, Sock}),
>          loop(Sock, Fsm)
>    {error, Reason} ->
>            ok = gen_tcp:close(Sock),
>    end.

There isn't really enough code here to know enough about what the
problem could be. It looks like you have 2 processes both of which
want  to go back and forth receiving from the same socket but I'm not
really clear why you just can't use 1 processes to do all the socket
handling.   If you were to post a listing of both modules or at least
enough code to demonstrate the problem then I'm sure we could be more


More information about the erlang-questions mailing list