From 24bbf44aa8f1039a75f21bc88d52eb46f75363b6 Mon Sep 17 00:00:00 2001 From: Thijs Klaver Date: Mon, 13 Jul 2026 16:12:10 +0200 Subject: [PATCH 1/2] Overload connect function to accept binary host --- src/hackney.erl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/hackney.erl b/src/hackney.erl index e3897512..b36cfd23 100644 --- a/src/hackney.erl +++ b/src/hackney.erl @@ -109,6 +109,10 @@ connect(URL, Options) when is_binary(URL) orelse is_list(URL) -> connect(Transport, Host, Port) -> connect(Transport, Host, Port, []). +-spec connect(module(), binary(), inet:port_number(), list()) -> {ok, conn()} | {error, term()}. +connect(Transport, Host, Port, Options) when is_binary(Host) -> + connect(Transport, binary_to_list(Host), Port, Options). + -spec connect(module(), string(), inet:port_number(), list()) -> {ok, conn()} | {error, term()}. connect(Transport, Host, Port, Options) -> %% Check if using a pool From 08a0393101b2fa32862765860fb9bbd91a27644e Mon Sep 17 00:00:00 2001 From: Benoit Chesneau Date: Wed, 15 Jul 2026 00:20:43 +0200 Subject: [PATCH 2/2] Merge connect/4 clauses under one spec so it compiles A -spec between the two connect/4 clauses split them into separate function definitions, causing redefinition errors. Combine the binary Host clause with the existing one and widen the spec to string() | binary(). --- src/hackney.erl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/hackney.erl b/src/hackney.erl index b36cfd23..6826b301 100644 --- a/src/hackney.erl +++ b/src/hackney.erl @@ -109,11 +109,10 @@ connect(URL, Options) when is_binary(URL) orelse is_list(URL) -> connect(Transport, Host, Port) -> connect(Transport, Host, Port, []). --spec connect(module(), binary(), inet:port_number(), list()) -> {ok, conn()} | {error, term()}. +-spec connect(module(), string() | binary(), inet:port_number(), list()) -> + {ok, conn()} | {error, term()}. connect(Transport, Host, Port, Options) when is_binary(Host) -> - connect(Transport, binary_to_list(Host), Port, Options). - --spec connect(module(), string(), inet:port_number(), list()) -> {ok, conn()} | {error, term()}. + connect(Transport, binary_to_list(Host), Port, Options); connect(Transport, Host, Port, Options) -> %% Check if using a pool UsePool = use_pool(Options),