aboutsummaryrefslogtreecommitdiffstats
path: root/test/proxy_header_SUITE.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-10-23 12:10:53 +0200
committerLoïc Hoguin <[email protected]>2018-10-23 12:10:53 +0200
commitd2720842a63dc7bc6ac01d9e2866bfa78cb39aa5 (patch)
treebe72af8e3dc7f40eff2302b739541feb61ce69d2 /test/proxy_header_SUITE.erl
parent8652000c0c40feee8f664b58ccb5cdfa60441a5f (diff)
downloadranch-d2720842a63dc7bc6ac01d9e2866bfa78cb39aa5.tar.gz
ranch-d2720842a63dc7bc6ac01d9e2866bfa78cb39aa5.tar.bz2
ranch-d2720842a63dc7bc6ac01d9e2866bfa78cb39aa5.zip
Add ranch:recv_proxy_header/2
This is the function that should be called regardless of TCP or TLS being used. The proper usage for this function is: {ok, ProxyInfo} = ranch:recv_proxy_header(Ref, Timeout), {ok, Socket} = ranch:handshake(Ref), ... Ranch takes care of everything else under the hood. Transports now need to have a Transport:recv_proxy_header/2 function. For ranch_ssl the function gets the port from the sslsocket() record and then calls ranch_tcp:recv_proxy_header/2 with it. This means that two undocumented features are currently used for this, but the interface is really nice so that's a sacrifice worth doing. Also worth noting is that OTP 22 should have an alternative for gen_tcp:unrecv/2 so the only real issue is about the sslsocket() record at the moment.
Diffstat (limited to 'test/proxy_header_SUITE.erl')
-rw-r--r--test/proxy_header_SUITE.erl12
1 files changed, 4 insertions, 8 deletions
diff --git a/test/proxy_header_SUITE.erl b/test/proxy_header_SUITE.erl
index b2308f8..6a80635 100644
--- a/test/proxy_header_SUITE.erl
+++ b/test/proxy_header_SUITE.erl
@@ -209,21 +209,17 @@ recv_v2_local_header_ssl_extra_data(_) ->
do_proxy_header_ssl(Name, ProxyInfo, <<"HELLO">>, <<"TCP Ranch is working!">>).
do_proxy_header_ssl(Name, ProxyInfo, Data1, Data2) ->
+ Opts = ct_helper:get_certs_from_ets(),
{ok, _} = ranch:start_listener(Name,
- ranch_tcp, #{},
- proxy_protocol_ssl, []),
+ ranch_ssl, Opts,
+ proxy_protocol, []),
Port = ranch:get_port(Name),
{ok, Socket0} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]),
ok = gen_tcp:send(Socket0, [ranch_proxy_header:header(ProxyInfo)]),
- %% This timeout is necessary to avoid a race condition when trying
- %% to obtain the pid of the test case from the protocol. The race
- %% condition is due to the TLS upgrade which changes the process
- %% owning the socket.
- timer:sleep(100),
{ok, Socket} = ssl:connect(Socket0, [], 1000),
ok = ssl:send(Socket, Data1),
receive
- {proxy_protocol_ssl, ProxyInfo} ->
+ {proxy_protocol, ProxyInfo} ->
ok
after 2000 ->
error(timeout)