877
877
throw({error, {failed_starting_tcp_transport, Else}})
879
mgc_start_tcp(RH, Port, Sup) when pid(Sup) ->
879
mgc_start_tcp(RH, Port, Sup) when is_pid(Sup) ->
880
880
d("tcp listen on ~p", [Port]),
881
Opts = [{port, Port}, {receive_handle, RH}],
881
Opts = [{port, Port},
882
{receive_handle, RH},
883
{tcp_options, [{nodelay, true}]}],
884
mgc_tcp_create_listen(Sup, Opts, 3).
886
mgc_tcp_create_listen(Sup, Opts, N) ->
887
mgc_tcp_create_listen(Sup, Opts, N, 1, undefined).
889
mgc_tcp_create_listen(_Sup, _Opts, N, N, InitialReason) ->
890
d("failed creating mgc tcp listen socket after ~p tries: ~p",
892
throw({error, {failed_starting_tcp_listen, InitialReason}});
893
mgc_tcp_create_listen(Sup, Opts, MaxN, N, InitialReason)
894
when is_integer(N) andalso is_integer(MaxN) andalso (MaxN > N) ->
895
d("try create mgc tcp listen socket [~w]", [N]),
882
896
case megaco_tcp:listen(Sup, Opts) of
899
{error, {could_not_start_listener, {gen_tcp_listen, eaddrinuse} = Reason}} ->
901
mgc_tcp_create_listen(Sup, Opts, MaxN, N + 1, Reason);
903
throw({error, {failed_starting_tcp_listen, Reason}});
886
905
throw({error, {failed_starting_tcp_listen, Else}})
1199
1218
case megaco_tcp:start_transport() of
1201
1220
{ok, LocalHost} = inet:gethostname(),
1202
Opts = [{host, LocalHost},{port, MgcPort}, {receive_handle, RH}],
1221
Opts = [{host, LocalHost},
1223
{receive_handle, RH},
1224
{tcp_options, [{nodelay, true}]}],
1203
1225
case megaco_tcp:connect(Sup, Opts) of
1204
1226
{ok, SendHandle, ControlPid} ->
1205
1227
PrelMgcMid = preliminary_mid,