diff options
| author | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2017-06-21 15:34:57 +0200 |
|---|---|---|
| committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2017-06-26 15:56:19 +0200 |
| commit | 64b96cd17d0e33a256beafdb252e2ecc1d6a9a1e (patch) | |
| tree | 3957e216c12bac57d01ec4f4a4ef606a4bb39681 /src | |
| parent | 7d60ecd6393856d8a611edbdb259eb7468af729e (diff) | |
| download | rabbitmq-server-git-64b96cd17d0e33a256beafdb252e2ecc1d6a9a1e.tar.gz | |
Move rabbit_net:accept_ack() to rabbit_networking
... in rabbitmq-server.
This resolves a reverse dependency of rabbitmq-common on
rabbitmq-server. However, this breaks the API because we can't keep a
compatibility function.
[#118490793]
(cherry picked from commit 3d09dc5fa2ea67eab355d82292fd026e475277a2)
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_networking.erl | 20 | ||||
| -rw-r--r-- | src/rabbit_reader.erl | 2 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl index bf945b4d6a..cd65841933 100644 --- a/src/rabbit_networking.erl +++ b/src/rabbit_networking.erl @@ -35,7 +35,8 @@ connection_info/1, connection_info/2, connection_info_all/0, connection_info_all/1, emit_connection_info_all/4, emit_connection_info_local/3, - close_connection/2, force_connection_event_refresh/1, tcp_host/1]). + close_connection/2, force_connection_event_refresh/1, accept_ack/2, + tcp_host/1]). %% Used by TCP-based transports, e.g. STOMP adapter -export([tcp_listener_addresses/1, tcp_listener_spec/9, @@ -86,6 +87,7 @@ [rabbit_types:infos()]. -spec close_connection(pid(), string()) -> 'ok'. -spec force_connection_event_refresh(reference()) -> 'ok'. +-spec accept_ack(any(), rabbit_net:socket()) -> ok. -spec on_node_down(node()) -> 'ok'. -spec tcp_listener_addresses(listener_config()) -> [address()]. @@ -336,6 +338,22 @@ force_connection_event_refresh(Ref) -> [rabbit_reader:force_event_refresh(C, Ref) || C <- connections()], ok. +accept_ack(Ref, Sock) -> + ok = ranch:accept_ack(Ref), + case tune_buffer_size(Sock) of + ok -> ok; + {error, _} -> rabbit_net:fast_close(Sock), + exit(normal) + end, + ok = file_handle_cache:obtain(). + +tune_buffer_size(Sock) -> + case rabbit_net:getopts(Sock, [sndbuf, recbuf, buffer]) of + {ok, BufSizes} -> BufSz = lists:max([Sz || {_Opt, Sz} <- BufSizes]), + rabbit_net:setopts(Sock, [{buffer, BufSz}]); + Error -> Error + end. + %%-------------------------------------------------------------------- tcp_host(IPAddress) -> diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index df9d783db1..9f3445731b 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -197,7 +197,7 @@ shutdown(Pid, Explanation) -> init(Parent, HelperSup, Ref, Sock) -> RealSocket = rabbit_net:unwrap_socket(Sock), - rabbit_net:accept_ack(Ref, RealSocket), + rabbit_networking:accept_ack(Ref, RealSocket), Deb = sys:debug_options([]), start_connection(Parent, HelperSup, Deb, Sock). |
