5050
5151-spec start (ejabberd :server (), list ()) -> ok .
5252start (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
6374maybe_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 .
7283stop (Host ) ->
7384 ejabberd_hooks :delete (hooks (Host )),
74- nksip :stop (? SERVICE ),
7585 ok .
7686
7787hooks (Host ) ->
0 commit comments