diff options
author | Jonas Ã…dahl <jadahl@gmail.com> | 2010-10-30 20:33:13 +0200 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2010-11-03 17:10:52 +0100 |
commit | 2f6873370887cb1a832f97661c1f7601c699ad64 (patch) | |
tree | 23a1965175ec4aeb0142810cb13adae27d139541 /src/ejabberd_socket.erl | |
parent | Correct in the Guide the default mod_irc encoding (diff) |
Fixes a leak of ejabberd_receiver processes.
When a (non-frontend) socket module without any custom receiver fails to
start, the newly created ejabberd_receiver process needs to be properly
closed.
Diffstat (limited to 'src/ejabberd_socket.erl')
-rw-r--r-- | src/ejabberd_socket.erl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/ejabberd_socket.erl b/src/ejabberd_socket.erl index 25ff64c2..4d21e407 100644 --- a/src/ejabberd_socket.erl +++ b/src/ejabberd_socket.erl @@ -87,7 +87,13 @@ start(Module, SockMod, Socket, Opts) -> end, ReceiverMod:become_controller(Receiver, Pid); {error, _Reason} -> - SockMod:close(Socket) + SockMod:close(Socket), + case ReceiverMod of + ejabberd_receiver -> + ReceiverMod:close(Receiver); + _ -> + ok + end end; independent -> ok; |