File 0198-ftp-fix-unhandled-clause-handle_ctrl_result-racey.patch of Package erlang

From 2aaa63613bf8ecf96b2c8f0e5d066de8d32b653c Mon Sep 17 00:00:00 2001
From: Alexander Clouter <alex@digriz.org.uk>
Date: Mon, 13 Jul 2020 20:50:47 +0100
Subject: [PATCH 08/14] ftp: fix unhandled clause handle_ctrl_result (racey)

I have only once had the recv_chunk_three_times test fail on me with:

Ftp connection closed due to: {function_clause,
                               [{ftp,handle_ctrl_result,
                                 [{pos_compl," Transfer complete.\r\n"},
                                  {state,
                                   {tcp,#Port<0.92>},
                                   {tcp,#Port<0.95>},
                                   undefined,true,
                                   "/otp/release/tests/test_server/ct_run.test_server@2f3b3bf1b7c3.x/tests.ftp_test.logs/run.x/log_private",
                                   ftp_server_default,true,passive,60000,<<>>,
                                   {<<>>,[],start},
                                   "226 Transfer complete.\r\n",<0.336.0>,
                                   undefined,recv_chunk,inet,[],[],[],ignore,
                                   infinity,false,false}],
                                 [{file,"/otp/lib/ftp/src/ftp.erl"},
                                  {line,1573}]},
                                {gen_server,try_dispatch,4,
                                 [{file,"gen_server.erl"},{line,680}]},
                                {gen_server,handle_msg,6,
                                 [{file,"gen_server.erl"},{line,756}]},
                                {proc_lib,init_p_do_apply,3,
                                 [{file,"proc_lib.erl"},{line,226}]}]}
---
 lib/ftp/src/ftp.erl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/ftp/src/ftp.erl b/lib/ftp/src/ftp.erl
index 645d8de25a..b2eb7c6a13 100644
--- a/lib/ftp/src/ftp.erl
+++ b/lib/ftp/src/ftp.erl
@@ -1317,7 +1317,7 @@ handle_info({Trpt, Socket, Data}, #state{dsock = {Trpt,Socket}, client = From,
             = State) when Trpt==tcp;Trpt==ssl ->
     ?DBG('L~p --data ~p ----> ~s~p~n',[?LINE,Socket,Data,State]),
     gen_server:reply(From, {ok, Data}),
-    {noreply, State#state{client = undefined, data = <<>>}};
+    {noreply, State#state{client = undefined, caller = undefined, data = <<>>}};
 
 handle_info({Trpt, Socket, Data}, #state{dsock = {Trpt,Socket}} = State0) when Trpt==tcp;Trpt==ssl ->
     ?DBG('L~p --data ~p ----> ~s~p~n',[?LINE,Socket,Data,State0]),
-- 
2.26.2

openSUSE Build Service is sponsored by