fixeria has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40018?usp=email )
Change subject: sctp_{client,server}: make sctp_nodelay configurable ......................................................................
sctp_{client,server}: make sctp_nodelay configurable
Keep the Nagle's algorithm disabled by default, but allow the user to re-enable it via the environment variables {mme,s1gw}_nodelay.
Change-Id: Ida5418f8590f40414215fc9667fb4ea70e2b1614 Related: SYS#7288 --- M src/osmo_s1gw_sup.erl M src/sctp_client.erl M src/sctp_server.erl 3 files changed, 6 insertions(+), 3 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved osmith: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve
diff --git a/src/osmo_s1gw_sup.erl b/src/osmo_s1gw_sup.erl index 22a0298..67b6f47 100644 --- a/src/osmo_s1gw_sup.erl +++ b/src/osmo_s1gw_sup.erl @@ -42,6 +42,7 @@
-define(SERVER, ?MODULE). -define(ENV_APP_NAME, osmo_s1gw). +-define(ENV_DEFAULT_SCTP_NODELAY, true). -define(ENV_DEFAULT_S1GW_BIND_ADDR, "127.0.1.1"). -define(ENV_DEFAULT_S1GW_BIND_PORT, ?S1AP_PORT). -define(ENV_DEFAULT_MME_LOC_ADDR, "127.0.2.1"). @@ -88,15 +89,19 @@
-spec client_cfg() -> sctp_client:cfg(). client_cfg() -> + SockOpts = #{sctp_nodelay => get_env(mme_nodelay, ?ENV_DEFAULT_SCTP_NODELAY)}, #{laddr => get_env(mme_loc_addr, ?ENV_DEFAULT_MME_LOC_ADDR), raddr => get_env(mme_rem_addr, ?ENV_DEFAULT_MME_REM_ADDR), - rport => get_env(mme_rem_port, ?ENV_DEFAULT_MME_REM_PORT)}. + rport => get_env(mme_rem_port, ?ENV_DEFAULT_MME_REM_PORT), + sockopts => maps:to_list(SockOpts)}.
-spec server_cfg() -> sctp_server:cfg(). server_cfg() -> + SockOpts = #{sctp_nodelay => get_env(s1gw_nodelay, ?ENV_DEFAULT_SCTP_NODELAY)}, #{laddr => get_env(s1gw_bind_addr, ?ENV_DEFAULT_S1GW_BIND_ADDR), lport => get_env(s1gw_bind_port, ?ENV_DEFAULT_S1GW_BIND_PORT), + sockopts => maps:to_list(SockOpts), handler => sctp_proxy, priv => client_cfg()}.
diff --git a/src/sctp_client.erl b/src/sctp_client.erl index 0396109..bea3c16 100644 --- a/src/sctp_client.erl +++ b/src/sctp_client.erl @@ -86,7 +86,6 @@ RPort = maps:get(rport, Cfg), {ok, Sock} = gen_sctp:open([{ip, LAddr}, {type, seqpacket}, - {sctp_nodelay, true}, {active, true}] ++ SockOpts), gen_sctp:connect_init(Sock, RAddr, RPort, []), {ok, Sock}. diff --git a/src/sctp_server.erl b/src/sctp_server.erl index 7f12878..34b2381 100644 --- a/src/sctp_server.erl +++ b/src/sctp_server.erl @@ -121,7 +121,6 @@ {port, LPort}, {type, seqpacket}, {reuseaddr, true}, - {sctp_nodelay, true}, {active, true}] ++ SockOpts), ?LOG_INFO("SCTP server listening on ~p:~p", [LAddr, LPort]), ok = gen_sctp:listen(Sock, true),