diff options
| author | Michael Klishin <michael@novemberain.com> | 2015-08-25 03:18:22 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@novemberain.com> | 2015-08-25 03:18:22 +0300 |
| commit | b61c80d1d75d162b8fd9e2958f03bd5b4ad96b82 (patch) | |
| tree | e98d8fd0fb021926aaacb4729862b09895124ec6 | |
| parent | b72d210ff7b7c4c82708e6882694199108f55364 (diff) | |
| parent | 695be6bae122364352922601730364957573f285 (diff) | |
| download | rabbitmq-server-git-b61c80d1d75d162b8fd9e2958f03bd5b4ad96b82.tar.gz | |
Merge pull request #285 from rabbitmq/rabbitmq-server-282
Force essential listen socket options
| -rw-r--r-- | src/rabbit_networking.erl | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl index 5d87743472..f95f8c5818 100644 --- a/src/rabbit_networking.erl +++ b/src/rabbit_networking.erl @@ -475,8 +475,22 @@ hostname() -> cmap(F) -> rabbit_misc:filter_exit_map(F, connections()). tcp_opts() -> - {ok, Opts} = application:get_env(rabbit, tcp_listen_options), - Opts. + {ok, ConfigOpts} = application:get_env(rabbit, tcp_listen_options), + merge_essential_tcp_listen_options(ConfigOpts). + +-define(ESSENTIAL_LISTEN_OPTIONS, + [binary, + {active, false}, + {packet, raw}, + {reuseaddr, true}, + {nodelay, true}]). + +merge_essential_tcp_listen_options(Opts) -> + lists:foldl(fun ({K, _} = Opt, Acc) -> + lists:keystore(K, 1, Acc, Opt); + (Opt, Acc) -> + [Opt | Acc] + end , Opts, ?ESSENTIAL_LISTEN_OPTIONS). %% inet_parse:address takes care of ip string, like "0.0.0.0" %% inet:getaddr returns immediately for ip tuple {0,0,0,0}, |
