diff options
author | Erlang/OTP <otp@erlang.org> | 2023-04-20 14:11:14 +0200 |
---|---|---|
committer | Erlang/OTP <otp@erlang.org> | 2023-04-20 14:11:14 +0200 |
commit | 465ecf62244fe533c4526c405c22f7eaefc56b7d (patch) | |
tree | 734b1280f636a0a73f21c538fa5ea7a398637ac1 /lib | |
parent | ed28d17acc467330baa6a59c200fa678dd439943 (diff) | |
parent | fadd337c262833387f285519b76d1b3ef3d4c0a7 (diff) | |
download | erlang-465ecf62244fe533c4526c405c22f7eaefc56b7d.tar.gz |
Merge branch 'kuba/maint-24/inets/fix_httpc_remote_socket_close/OTP-18545' into maint-24
* kuba/maint-24/inets/fix_httpc_remote_socket_close/OTP-18545:
inets: httpc fix for socket closing
Diffstat (limited to 'lib')
-rw-r--r-- | lib/inets/src/http_client/httpc_handler.erl | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index 994a96919e..aac0058632 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -305,8 +305,9 @@ terminate(normal, %% Socket closed remotely terminate(normal, #state{session = #session{socket = {remote_close, Socket}, - socket_type = SocketType, - id = Id}, + socket_type = SocketType, + type = Type, + id = Id}, profile_name = ProfileName, request = Request, timers = Timers, @@ -315,8 +316,12 @@ terminate(normal, %% Clobber session (catch httpc_manager:delete_session(Id, ProfileName)), - maybe_retry_queue(Pipeline, State), - maybe_retry_queue(KeepAlive, State), + case Type of + pipeline -> + maybe_retry_queue(Pipeline, State); + _ -> + maybe_retry_queue(KeepAlive, State) + end, %% Cancel timers cancel_timers(Timers), @@ -328,8 +333,9 @@ terminate(normal, http_transport:close(SocketType, Socket); terminate(_Reason, #state{session = #session{id = Id, - socket = Socket, - socket_type = SocketType}, + socket = Socket, + type = Type, + socket_type = SocketType}, request = undefined, profile_name = ProfileName, timers = Timers, @@ -339,8 +345,12 @@ terminate(_Reason, #state{session = #session{id = Id, %% Clobber session (catch httpc_manager:delete_session(Id, ProfileName)), - maybe_retry_queue(Pipeline, State), - maybe_retry_queue(KeepAlive, State), + case Type of + pipeline -> + maybe_retry_queue(Pipeline, State); + _ -> + maybe_retry_queue(KeepAlive, State) + end, cancel_timer(Timers#timers.queue_timer, timeout_queue), http_transport:close(SocketType, Socket); |