diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2012-05-28 15:43:53 +0100 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-05-28 15:43:53 +0100 |
commit | 6e86f7397a3c7730cc79d8fa55f0035f9d047436 (patch) | |
tree | e3bacbbf50775a74559d196c7ebb83ecd34f5df4 | |
parent | e85264b4e59f3bb782ca70d5abf91126bf9da1a8 (diff) | |
download | rabbitmq-server-bug24872.tar.gz |
refactor: move socket buffer size tuning into rabbit_netbug24872
so it can be re-used in stomp et al
-rw-r--r-- | src/rabbit_net.erl | 10 | ||||
-rw-r--r-- | src/rabbit_reader.erl | 9 |
2 files changed, 10 insertions, 9 deletions
diff --git a/src/rabbit_net.erl b/src/rabbit_net.erl index 1a12d43b..bedf5142 100644 --- a/src/rabbit_net.erl +++ b/src/rabbit_net.erl @@ -20,7 +20,7 @@ -export([is_ssl/1, ssl_info/1, controlling_process/2, getstat/2, recv/1, async_recv/3, port_command/2, getopts/2, setopts/2, send/2, close/1, maybe_fast_close/1, sockname/1, peername/1, peercert/1, - connection_string/2]). + tune_buffer_size/1, connection_string/2]). %%--------------------------------------------------------------------------- @@ -69,6 +69,7 @@ -spec(peercert/1 :: (socket()) -> 'nossl' | ok_val_or_error(rabbit_ssl:certificate())). +-spec(tune_buffer_size/1 :: (socket()) -> ok_or_any_error()). -spec(connection_string/2 :: (socket(), 'inbound' | 'outbound') -> ok_val_or_error(string())). @@ -159,6 +160,13 @@ peername(Sock) when is_port(Sock) -> inet:peername(Sock). peercert(Sock) when ?IS_SSL(Sock) -> ssl:peercert(Sock#ssl_socket.ssl); peercert(Sock) when is_port(Sock) -> nossl. +tune_buffer_size(Sock) -> + case getopts(Sock, [sndbuf, recbuf, buffer]) of + {ok, BufSizes} -> BufSz = lists:max([Sz || {_Opt, Sz} <- BufSizes]), + setopts(Sock, [{buffer, BufSz}]); + Err -> Err + end. + connection_string(Sock, Direction) -> {From, To} = case Direction of inbound -> {fun peername/1, fun sockname/1}; diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 463bdd83..b773f83b 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -222,14 +222,7 @@ start_connection(Parent, ChannelSupSupPid, Collector, StartHeartbeatFun, Deb, last_blocked_by = none, last_blocked_at = never}, try - BufSizes = inet_op(fun () -> - rabbit_net:getopts( - ClientSock, [sndbuf, recbuf, buffer]) - end), - BufSz = lists:max([Sz || {_Opt, Sz} <- BufSizes]), - ok = inet_op(fun () -> - rabbit_net:setopts(ClientSock, [{buffer, BufSz}]) - end), + ok = inet_op(fun () -> rabbit_net:tune_buffer_size(ClientSock) end), recvloop(Deb, switch_callback(rabbit_event:init_stats_timer( State, #v1.stats_timer), handshake, 8)), |