summaryrefslogtreecommitdiff
path: root/src/ejabberd_socket.erl
diff options
context:
space:
mode:
authorJonas Ã…dahl <jadahl@gmail.com>2010-10-30 20:33:13 +0200
committerBadlop <badlop@process-one.net>2010-11-03 17:10:52 +0100
commit2f6873370887cb1a832f97661c1f7601c699ad64 (patch)
tree23a1965175ec4aeb0142810cb13adae27d139541 /src/ejabberd_socket.erl
parentCorrect 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.erl8
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;