summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2013-07-27 14:13:37 +0800
committerHarald Welte <laforge@gnumonks.org>2013-07-27 16:00:07 +0800
commitdd03995ea2b5e1ff07c1da06e7b2a96329a4a369 (patch)
tree692e3eb473223bac72f04078621cf807e6edabc2 /src
parent43ceb090995a22942aa4ba7c7acee4e8966486a4 (diff)
sctp_core: register process name and listen to SCTP socket in passive mode
Diffstat (limited to 'src')
-rw-r--r--src/sctp_core.erl9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/sctp_core.erl b/src/sctp_core.erl
index 464917a..654114b 100644
--- a/src/sctp_core.erl
+++ b/src/sctp_core.erl
@@ -68,7 +68,9 @@ behaviour_info(Other) ->
}).
start_link(InitOpts) ->
- gen_fsm:start_link(?MODULE, InitOpts, [{debug, [trace]}]).
+ LocalPort = proplists:get_value(sctp_local_port, InitOpts),
+ Name = list_to_atom("sctp_core_" ++ integer_to_list(LocalPort)),
+ gen_fsm:start_link({local, Name}, ?MODULE, InitOpts, [{debug, [trace]}]).
reconnect_sctp(L = #sctp_state{sctp_remote_ip = Ip, sctp_remote_port = Port, sctp_sock = Sock}) ->
io:format("SCTP Reconnect ~p:~p~n", [Ip, Port]),
@@ -108,7 +110,7 @@ init(InitOpts) ->
active ->
gen_fsm:send_event(self(), osmo_util:make_prim('M','SCTP_ESTABLISH',request));
_ ->
- ok
+ ok = gen_sctp:listen(SctpSock, true)
end,
{ok, idle, LoopDat};
Default ->
@@ -174,6 +176,9 @@ handle_info({sctp, Socket, _RemoteIp, _RemotePort, {ANC, SAC}},
associating ->
NewState = established,
Spec = confirm;
+ idle ->
+ NewState = established,
+ Spec = indication;
_ ->
NewState = State,
Spec = indication