@@ -115,6 +115,11 @@ controlling_process(Sock, Pid) when is_port(Sock) ->
115
115
getstat (Sock , Stats ) when ? IS_SSL (Sock ) ->
116
116
inet :getstat (ssl_get_socket (Sock ), Stats );
117
117
getstat (Sock , Stats ) when is_port (Sock ) ->
118
+ inet :getstat (Sock , Stats );
119
+ % % Used by Proxy protocol support in plugins
120
+ getstat ({rabbit_proxy_socket , Sock , _ }, Stats ) when ? IS_SSL (Sock ) ->
121
+ inet :getstat (ssl_get_socket (Sock ), Stats );
122
+ getstat ({rabbit_proxy_socket , Sock , _ }, Stats ) when is_port (Sock ) ->
118
123
inet :getstat (Sock , Stats ).
119
124
120
125
recv (Sock ) when ? IS_SSL (Sock ) ->
@@ -232,15 +237,12 @@ socket_ends(Sock, Direction) when ?IS_SSL(Sock);
232
237
{_ , {error , _Reason } = Error } ->
233
238
Error
234
239
end ;
235
- socket_ends (Sock , Direction = inbound ) when is_tuple (Sock ) ->
236
- % % proxy protocol support
237
- % % hack: we have to check the record type
238
- {ok , {{FromAddress , FromPort }, {_ , _ }}} = case element (1 , Sock ) of
239
- proxy_socket -> ranch_proxy_protocol :proxyname (undefined , Sock );
240
- ssl_socket -> ranch_proxy_ssl :proxyname (Sock )
241
- end ,
240
+ socket_ends ({rabbit_proxy_socket , CSocket , ProxyInfo }, Direction = inbound ) ->
241
+ #{
242
+ src_address := FromAddress ,
243
+ src_port := FromPort
244
+ } = ProxyInfo ,
242
245
{_From , To } = sock_funs (Direction ),
243
- CSocket = unwrap_socket (Sock ),
244
246
case To (CSocket ) of
245
247
{ok , {ToAddress , ToPort }} ->
246
248
{ok , {rdns (FromAddress ), FromPort ,
@@ -294,34 +296,12 @@ is_loopback(_) -> false.
294
296
295
297
ipv4 (AB , CD ) -> {AB bsr 8 , AB band 255 , CD bsr 8 , CD band 255 }.
296
298
297
- unwrap_socket (Sock ) when ? IS_SSL (Sock );
298
- is_port (Sock ) ->
299
+ unwrap_socket ({rabbit_proxy_socket , Sock , _ }) ->
299
300
Sock ;
300
- unwrap_socket (Sock ) when is_tuple (Sock ) ->
301
- % % proxy protocol support
302
- % % hack: we have to check the record type
303
- case element (1 , Sock ) of
304
- proxy_socket ->
305
- ranch_proxy_protocol :get_csocket (Sock );
306
- ssl_socket ->
307
- ranch_proxy_ssl :get_csocket (Sock )
308
- end ;
309
301
unwrap_socket (Sock ) ->
310
302
Sock .
311
303
312
- maybe_get_proxy_socket (Sock ) when ? IS_SSL (Sock );
313
- is_port (Sock ) ->
314
- undefined ;
315
- maybe_get_proxy_socket (Sock ) when is_tuple (Sock ) ->
316
- % % proxy protocol support
317
- % % hack: we have to check the record type
318
- case element (1 , Sock ) of
319
- proxy_socket ->
320
- Sock ;
321
- ssl_socket ->
322
- Sock ;
323
- _ ->
324
- undefined
325
- end ;
304
+ maybe_get_proxy_socket (Sock = {rabbit_proxy_socket , _ , _ }) ->
305
+ Sock ;
326
306
maybe_get_proxy_socket (_Sock ) ->
327
307
undefined .
0 commit comments