Skip to content

Commit 07e1aa8

Browse files
committed
accept error already_started and make sure nksip app is running
1 parent 47b2c79 commit 07e1aa8

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/jingle_sip/mod_jingle_sip.erl

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,26 @@
5050

5151
-spec start(ejabberd:server(), list()) -> ok.
5252
start(Host, Opts) ->
53+
start_nksip_service_or_error(Opts),
54+
mod_jingle_sip_backend:init(Host, Opts),
55+
ejabberd_hooks:add(hooks(Host)),
56+
ok.
57+
58+
start_nksip_service_or_error(Opts) ->
59+
application:ensure_all_started(nksip),
5360
ListenPort = gen_mod:get_opt(listen_port, Opts, 5600),
5461
NkSipBasicOpts = #{sip_listen => "sip:all:" ++ integer_to_list(ListenPort),
5562
callback => jingle_sip_callbacks,
5663
plugins => [nksip_outbound, nksip_100rel]},
5764
NkSipOpts = maybe_add_udp_max_size(NkSipBasicOpts, Opts),
58-
{ok, _SrvID} = nksip:start(?SERVICE, NkSipOpts),
59-
mod_jingle_sip_backend:init(Host, Opts),
60-
ejabberd_hooks:add(hooks(Host)),
61-
ok.
65+
case nksip:start(?SERVICE, NkSipOpts) of
66+
{ok, _SrvID} ->
67+
ok;
68+
{error, already_started} ->
69+
ok;
70+
Other ->
71+
erlang:error(Other)
72+
end.
6273

6374
maybe_add_udp_max_size(NkSipOpts, Opts) ->
6475
case gen_mod:get_opt(udp_max_size, Opts, undefined) of
@@ -71,7 +82,6 @@ maybe_add_udp_max_size(NkSipOpts, Opts) ->
7182
-spec stop(ejabberd:server()) -> ok.
7283
stop(Host) ->
7384
ejabberd_hooks:delete(hooks(Host)),
74-
nksip:stop(?SERVICE),
7585
ok.
7686

7787
hooks(Host) ->

0 commit comments

Comments
 (0)