Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:18
erlang
0897-inets-re-use-connect_timeout-option-in-TLS...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0897-inets-re-use-connect_timeout-option-in-TLS-upgrade.patch of Package erlang
From 98123fc35f868187f085d2e74f2079f2a7237dac Mon Sep 17 00:00:00 2001 From: Jakub Witczak <kuba@erlang.org> Date: Fri, 25 Mar 2022 15:49:55 +0100 Subject: [PATCH] inets: re-use connect_timeout option in TLS upgrade - re-use connect_timeout during TLS upgrade of connection over proxy - connect_timeout test in inets - TLS upgrade client timeout test in ssl --- lib/inets/src/http_client/httpc_handler.erl | 6 ++-- lib/inets/test/httpc_proxy_SUITE.erl | 22 +++++++++++-- lib/ssl/test/ssl_test_lib.erl | 21 +++++++++++++ lib/ssl/test/tls_api_SUITE.erl | 34 +++++++++++++++++++++ 4 files changed, 77 insertions(+), 6 deletions(-) diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index c5993cc37c..b7f79a5ed3 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -1637,14 +1637,14 @@ host_header(_, URI) -> tls_upgrade(#state{status = {ssl_tunnel, #request{settings = - #http_options{ssl = {_, TLSOptions0} = SocketType}, + #http_options{ssl = {_, TLSOptions0} = SocketType, + connect_timeout = ConnectTimeout}, address = {Host, _} = Address} = Request}, session = #session{socket = TCPSocket} = Session0, options = Options} = State) -> TLSOptions = maybe_add_sni(Host, TLSOptions0), - - case ssl:connect(TCPSocket, TLSOptions) of + case ssl:connect(TCPSocket, TLSOptions, ConnectTimeout) of {ok, TLSSocket} -> ClientClose = httpc_request:is_client_closing(Request#request.headers), SessionType = httpc_manager:session_type(Options), diff --git a/lib/inets/test/httpc_proxy_SUITE.erl b/lib/inets/test/httpc_proxy_SUITE.erl index a962867ce1..d47d340b45 100644 --- a/lib/inets/test/httpc_proxy_SUITE.erl +++ b/lib/inets/test/httpc_proxy_SUITE.erl @@ -78,7 +78,8 @@ local_proxy_cases() -> http_not_modified_otp_6821]. local_proxy_https_cases() -> - [https_connect_error]. + [https_connect_error, + http_timeout]. %%-------------------------------------------------------------------- @@ -445,6 +446,21 @@ https_connect_error(Config) when is_list(Config) -> httpc:request(Method, Request, HttpOpts, Opts). %%-------------------------------------------------------------------- +http_timeout(doc) -> + ["Test http/https connect and upgrade timeouts."]; +http_timeout(Config) when is_list(Config) -> + Method = get, + URL = url("/index.html", Config), + Request = {URL,[]}, + Timeout = timer:seconds(1), + HttpOpts1 = [{timeout, Timeout}, {connect_timeout, 0}], + {error, + {failed_connect, + [{to_address,{"localhost",8000}}, + {inet,[inet],timeout}]}} + = httpc:request(Method, Request, HttpOpts1, []), + ok. +%%-------------------------------------------------------------------- %% Internal Functions ------------------------------------------------ %%-------------------------------------------------------------------- diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl index d5899d9711..2f7314adb8 100644 --- a/lib/ssl/test/ssl_test_lib.erl +++ b/lib/ssl/test/ssl_test_lib.erl @@ -1990,6 +1992,25 @@ run_upgrade_client(Opts) -> rpc:call(Node, ssl, close, [SslSocket]) end. +start_upgrade_client_error(Args) -> + Node = proplists:get_value(node, Args), + spawn_link(Node, ?MODULE, run_upgrade_client_error, [Args]). + +run_upgrade_client_error(Opts) -> + Host = proplists:get_value(host, Opts), + Port = proplists:get_value(port, Opts), + Pid = proplists:get_value(from, Opts), + Timeout = proplists:get_value(timeout, Opts, infinity), + TcpOptions = proplists:get_value(tcp_options, Opts), + SslOptions = proplists:get_value(ssl_options, Opts), + ?LOG("gen_tcp:connect(~p, ~p, ~p)", + [Host, Port, TcpOptions]), + {ok, Socket} = gen_tcp:connect(Host, Port, TcpOptions), + send_selected_port(Pid, Port, Socket), + ?LOG("ssl:connect(~p, ~p)", [Socket, SslOptions]), + Error = ssl:connect(Socket, SslOptions, Timeout), + Pid ! {self(), Error}. + start_upgrade_server_error(Args) -> Result = spawn_link(?MODULE, run_upgrade_server_error, [Args]), receive -- 2.34.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor