From aa2d6bb2fd5f7bc642a27113a0dc08e21525ffda Mon Sep 17 00:00:00 2001 From: Tomasz Kowal Date: Sun, 31 May 2026 11:00:20 +0000 Subject: [PATCH 1/2] Fix dialyzer specs --- src/hackney.erl | 2 +- src/hackney_conn.erl | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hackney.erl b/src/hackney.erl index 68fae8dd..5c5f67df 100644 --- a/src/hackney.erl +++ b/src/hackney.erl @@ -76,7 +76,7 @@ -type request_ret() :: {ok, integer(), list(), binary()} | %% response with body {ok, integer(), list()} | %% HEAD request - {ok, reference()} | %% async mode + {ok, conn()} | %% async mode or streaming body upload (body = stream) {error, term()}. -export_type([url/0, conn/0, request_ret/0]). diff --git a/src/hackney_conn.erl b/src/hackney_conn.erl index 57eb918d..ad744a6f 100644 --- a/src/hackney_conn.erl +++ b/src/hackney_conn.erl @@ -344,17 +344,17 @@ stream_body(Pid) -> %% - {hackney_response, Ref, {see_other, Location, Headers}} for 303 with POST %% AsyncMode: true (continuous) or once (one message at a time, use stream_next/1) -spec request_async(pid(), binary(), binary(), list(), binary() | iolist(), true | once) -> - {ok, reference()} | {error, term()}. + {ok, pid()} | {error, term()}. request_async(Pid, Method, Path, Headers, Body, AsyncMode) -> request_async(Pid, Method, Path, Headers, Body, AsyncMode, self(), false). -spec request_async(pid(), binary(), binary(), list(), binary() | iolist(), true | once, pid()) -> - {ok, reference()} | {error, term()}. + {ok, pid()} | {error, term()}. request_async(Pid, Method, Path, Headers, Body, AsyncMode, StreamTo) -> request_async(Pid, Method, Path, Headers, Body, AsyncMode, StreamTo, false). -spec request_async(pid(), binary(), binary(), list(), binary() | iolist(), true | once, pid(), boolean()) -> - {ok, reference()} | {error, term()}. + {ok, pid()} | {error, term()}. request_async(Pid, Method, Path, Headers, Body, AsyncMode, StreamTo, FollowRedirect) -> case valid_request_target(Path) of ok -> gen_statem:call(Pid, {request_async, Method, Path, Headers, Body, AsyncMode, StreamTo, FollowRedirect}); @@ -362,7 +362,7 @@ request_async(Pid, Method, Path, Headers, Body, AsyncMode, StreamTo, FollowRedir end. -spec request_async(pid(), binary(), binary(), list(), binary() | iolist(), true | once, pid(), boolean(), list()) -> - {ok, reference()} | {error, term()}. + {ok, pid()} | {error, term()}. request_async(Pid, Method, Path, Headers, Body, AsyncMode, StreamTo, FollowRedirect, ReqOpts) -> case valid_request_target(Path) of ok -> gen_statem:call(Pid, {request_async, Method, Path, Headers, Body, AsyncMode, StreamTo, FollowRedirect, ReqOpts}); From a71883f6c4e75c943f20fa0cbe5fd22d22e79e33 Mon Sep 17 00:00:00 2001 From: Tomasz Kowal Date: Sun, 31 May 2026 11:10:12 +0000 Subject: [PATCH 2/2] Remove stale reference() from async return types Async/streaming returns are pid() since 4.x. Drop {ok, reference()} from middleware response type and dead request_ref field. Co-Authored-By: Claude Opus 4.7 (1M context) --- guides/middleware.md | 3 +-- src/hackney_conn.erl | 1 - src/hackney_middleware.erl | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/guides/middleware.md b/guides/middleware.md index 608bc8b5..7cea04b4 100644 --- a/guides/middleware.md +++ b/guides/middleware.md @@ -14,8 +14,7 @@ no registry, no deps. -type response() :: {ok, integer(), list(), binary()} | {ok, integer(), list()} %% HEAD - | {ok, reference()} %% async - | {ok, pid()} %% streaming upload + | {ok, pid()} %% async or streaming upload | {error, term()}. -type next() :: fun((request()) -> response()). diff --git a/src/hackney_conn.erl b/src/hackney_conn.erl index ad744a6f..a455cf7d 100644 --- a/src/hackney_conn.erl +++ b/src/hackney_conn.erl @@ -141,7 +141,6 @@ pool_pid :: pid() | undefined, %% If set, connection is from a pool %% Request tracking - request_ref :: reference() | undefined, request_from :: {pid(), reference()} | undefined, method :: binary() | undefined, path :: binary() | undefined, diff --git a/src/hackney_middleware.erl b/src/hackney_middleware.erl index 1ce6cd7b..7175c7ad 100644 --- a/src/hackney_middleware.erl +++ b/src/hackney_middleware.erl @@ -49,7 +49,6 @@ -type response() :: {ok, integer(), list(), binary()} | {ok, integer(), list()} - | {ok, reference()} | {ok, pid()} | {error, term()}.