[erlang-questions] EPmail-0.1 released

Alain O'Dea <>
Fri Jan 28 17:29:36 CET 2011


On 2011-01-28, at 4:40, Max Lapshin <> wrote:

> Really, this code:
> 
> accept(Socket) ->
>    case gen_tcp:accept(Socket) of
>    {ok, Sock} ->
>         spawn(?MODULE, receive_loop, [Sock, [], []]),
>             gen_tcp:send(Sock, "+OK POP3 server ready \r\n"),
>           accept(Socket);
>    {error, Reason} ->
>        Reason
>    end.
> 
> 
> isn't suitable for production. You should start all processes via
> supervisors to keep track of them.
> If you start just plain spawn/spawn_link, you risk to loose process
> and get memory leak.

Alexander has planned to address this in the next version by using a supervisor and possibly gen_event child processes.  He is reading through Erlang and OTP in Action now :)

Memory leaks are a another very important motivation for this refactor.  Thank you Max :)


More information about the erlang-questions mailing list