LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File 0547-inets-httpc-Do-not-use-bracked-addresses-to-gen_tcp-.patch of Package erlang (Project home:Ledest:erlang:20)

From f6d76e0c76591721baab85d249685104daad94e5 Mon Sep 17 00:00:00 2001
From: Ingela Anderton Andin <ingela@erlang.org>
Date: Thu, 17 Jan 2019 13:21:58 +0100
Subject: [PATCH] inets: httpc - Do not use bracked addresses to gen_tcp or ssl
 calls

---
 lib/inets/src/http_client/httpc_handler.erl | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl
index 1bf5d25c98..8b356d8026 100644
--- a/lib/inets/src/http_client/httpc_handler.erl
+++ b/lib/inets/src/http_client/httpc_handler.erl
@@ -805,11 +805,12 @@ handle_unix_socket_options(#request{unix_socket = UnixSocket},
             error({badarg, [{ipfamily, Else}, {unix_socket, UnixSocket}]})
     end.
 
-connect_and_send_first_request(Address, Request, #state{options = Options0} = State) ->
+connect_and_send_first_request(Address, #request{ipv6_host_with_brackets = HasBrackets} = Request, 
+                               #state{options = Options0} = State) ->
     SocketType  = socket_type(Request),
     ConnTimeout = (Request#request.settings)#http_options.connect_timeout,
     Options = handle_unix_socket_options(Request, Options0),
-    case connect(SocketType, Address, Options, ConnTimeout) of
+    case connect(SocketType, format_address(Address, HasBrackets), Options, ConnTimeout) of
         {ok, Socket} ->
             ClientClose =
 		httpc_request:is_client_closing(
@@ -1739,3 +1740,8 @@ update_session(ProfileName, #session{id = SessionId} = Session, Pos, Value) ->
     end.
 
 
+format_address({Host, Port}, true) when is_list(Host)->
+    {ok, Address} = inet:parse_address(string:strip(string:strip(Host, right, $]), left, $[)),
+    {Address, Port};
+format_address(HostPort, _) ->
+    HostPort.
-- 
2.16.4