|
34 | 34 | connections/0, connection_info_keys/0, |
35 | 35 | connection_info/1, connection_info/2, |
36 | 36 | connection_info_all/0, connection_info_all/1, connection_info_all/3, |
37 | | - close_connection/2, force_connection_event_refresh/1, tcp_host/1]). |
| 37 | + close_connection/2, force_connection_event_refresh/1, accept_ack/2, |
| 38 | + tcp_host/1]). |
38 | 39 |
|
39 | 40 | %% Used by TCP-based transports, e.g. STOMP adapter |
40 | 41 | -export([tcp_listener_addresses/1, tcp_listener_spec/9, |
|
87 | 88 | 'ok'. |
88 | 89 | -spec close_connection(pid(), string()) -> 'ok'. |
89 | 90 | -spec force_connection_event_refresh(reference()) -> 'ok'. |
| 91 | +-spec accept_ack(any(), rabbit_net:socket()) -> ok. |
90 | 92 |
|
91 | 93 | -spec on_node_down(node()) -> 'ok'. |
92 | 94 | -spec tcp_listener_addresses(listener_config()) -> [address()]. |
@@ -313,6 +315,22 @@ force_connection_event_refresh(Ref) -> |
313 | 315 | [rabbit_reader:force_event_refresh(C, Ref) || C <- connections()], |
314 | 316 | ok. |
315 | 317 |
|
| 318 | +accept_ack(Ref, Sock) -> |
| 319 | + ok = ranch:accept_ack(Ref), |
| 320 | + case tune_buffer_size(Sock) of |
| 321 | + ok -> ok; |
| 322 | + {error, _} -> rabbit_net:fast_close(Sock), |
| 323 | + exit(normal) |
| 324 | + end, |
| 325 | + ok = file_handle_cache:obtain(). |
| 326 | + |
| 327 | +tune_buffer_size(Sock) -> |
| 328 | + case rabbit_net:getopts(Sock, [sndbuf, recbuf, buffer]) of |
| 329 | + {ok, BufSizes} -> BufSz = lists:max([Sz || {_Opt, Sz} <- BufSizes]), |
| 330 | + rabbit_net:setopts(Sock, [{buffer, BufSz}]); |
| 331 | + Error -> Error |
| 332 | + end. |
| 333 | + |
316 | 334 | %%-------------------------------------------------------------------- |
317 | 335 |
|
318 | 336 | tcp_host(IPAddress) -> |
|
0 commit comments