Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:26
erlang
3041-Rewrite-show-econnreset-for-read-more-like...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3041-Rewrite-show-econnreset-for-read-more-like-inet_drv.patch of Package erlang
From 07f45fe1534e9da144d41a16fa4bfec0b672071e Mon Sep 17 00:00:00 2001 From: Raimo Niskanen <raimo@erlang.org> Date: Tue, 27 Feb 2024 18:53:29 +0100 Subject: [PATCH 11/22] Rewrite show econnreset for read more like inet_drv --- lib/kernel/src/gen_tcp_socket.erl | 48 +++++++++++++++++-------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/lib/kernel/src/gen_tcp_socket.erl b/lib/kernel/src/gen_tcp_socket.erl index 558257be13..407f567bb3 100644 --- a/lib/kernel/src/gen_tcp_socket.erl +++ b/lib/kernel/src/gen_tcp_socket.erl @@ -2086,7 +2086,7 @@ handle_close(#params{socket = Socket} = P, D, State, ActionsR) -> #recv{info = Info} -> socket_cancel(P#params.socket, Info), socket_close(Socket), - {next_state, 'closed_read', P_D_1, Actions_1} = + {next_state, _, P_D_1, Actions_1} = handle_recv_error(P, D, ActionsR, closed), {P_D_1, Actions_1}; _ when State =:= 'closed_read'; @@ -2423,7 +2423,6 @@ handle_recv_error( %% %% Send active socket messages %% - %% ?DBG({Active, ShowEconnreset, ActionsR, Reason}), ModuleSocket = module_socket(P), Owner = P#params.owner, if @@ -2441,32 +2440,39 @@ handle_recv_error( P, D_1, ActionsR, Reason, 'connected'); true -> - %% ?DBG({P#params.socket, {Reason,ShowEconnreset}}), + ShowEconnreset = maps:get(show_econnreset, D), ReplyReason = case ShowEconnreset of true when Reason =:= closed -> econnreset; false when Reason =:= econnreset -> closed; _ -> Reason end, - D_1 = - case Active of - false -> - D; - _ -> - if - ShowEconnreset =:= true; - Reason =/= closed, Reason =/= econnreset -> - Owner ! - {tcp_error, ModuleSocket, ReplyReason}, - ok; - true -> ok + case Active of + false -> + handle_recv_error( + P, D, ActionsR, ReplyReason, 'closed_read'); + _ -> + if + ShowEconnreset =:= true; + Reason =/= closed, Reason =/= econnreset -> + Owner ! + {tcp_error, ModuleSocket, ReplyReason}, + ok; + true -> ok + end, + Owner ! {tcp_closed, ModuleSocket}, + D_1 = D#{active := false, tcp_closed := true}, + NextState = + case maps:get(exit_on_close, D) of + true -> + socket_close(P#params.socket), + 'closed'; + false -> + 'closed_read' end, - Owner ! {tcp_closed, ModuleSocket}, - D#{active := false, tcp_closed := true} - end, - handle_recv_error( - P, D_1, ActionsR, ReplyReason, - 'closed_read') + handle_recv_error( + P, D_1, ActionsR, ReplyReason, NextState) + end end. %% handle_recv_error(P, D, ActionsR, ReplyReason, NextState) -> -- 2.35.3
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