summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2012-05-28 15:43:53 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2012-05-28 15:43:53 +0100
commit6e86f7397a3c7730cc79d8fa55f0035f9d047436 (patch)
treee3bacbbf50775a74559d196c7ebb83ecd34f5df4
parente85264b4e59f3bb782ca70d5abf91126bf9da1a8 (diff)
downloadrabbitmq-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.erl10
-rw-r--r--src/rabbit_reader.erl9
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)),