Report decrypt error upstream (instead of crashing)
This commit is contained in:
parent
738b123164
commit
0436704327
@ -85,11 +85,17 @@ handle_call({active, Pid, NewActive}, _From, S) ->
|
|||||||
handle_cast(_Msg, S) ->
|
handle_cast(_Msg, S) ->
|
||||||
{noreply, S}.
|
{noreply, S}.
|
||||||
|
|
||||||
handle_info({tcp, TS, Data}, S = #state{ tcp_sock = TS }) ->
|
handle_info({tcp, TS, Data}, S = #state{ tcp_sock = TS, owner = O }) ->
|
||||||
|
try
|
||||||
{S1, Msgs} = handle_data(S, Data),
|
{S1, Msgs} = handle_data(S, Data),
|
||||||
S2 = handle_msgs(S1#state{ msgbuf = S1#state.msgbuf ++ Msgs }),
|
S2 = handle_msgs(S1#state{ msgbuf = S1#state.msgbuf ++ Msgs }),
|
||||||
set_active(S2),
|
set_active(S2),
|
||||||
{noreply, S2};
|
{noreply, S2}
|
||||||
|
catch error:{enoise_error, _} ->
|
||||||
|
%% We are not likely to recover, but leave the decision to upstream
|
||||||
|
O ! {enoise_error, TS, decrypt_error},
|
||||||
|
{noreply, S}
|
||||||
|
end;
|
||||||
handle_info({tcp_closed, TS}, S = #state{ tcp_sock = TS, owner = O }) ->
|
handle_info({tcp_closed, TS}, S = #state{ tcp_sock = TS, owner = O }) ->
|
||||||
O ! {tcp_closed, TS},
|
O ! {tcp_closed, TS},
|
||||||
{noreply, S#state{ tcp_sock = closed }};
|
{noreply, S#state{ tcp_sock = closed }};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user