diff --git a/src/enoise.erl b/src/enoise.erl index 0df59f3..c57116b 100644 --- a/src/enoise.erl +++ b/src/enoise.erl @@ -181,8 +181,12 @@ do_handshake(HState, ComState, Timeout) -> in -> case hs_recv_msg(ComState, Timeout) of {ok, Data, ComState1} -> - {ok, HState1, _Msg} = enoise_hs_state:read_message(HState, Data), - do_handshake(HState1, ComState1, Timeout); + case enoise_hs_state:read_message(HState, Data) of + {ok, HState1, _Msg} -> + do_handshake(HState1, ComState1, Timeout); + Err = {error, _} -> + Err + end; Err = {error, _} -> Err end; diff --git a/src/enoise_hs_state.erl b/src/enoise_hs_state.erl index ae92433..cba8f97 100644 --- a/src/enoise_hs_state.erl +++ b/src/enoise_hs_state.erl @@ -160,8 +160,11 @@ encrypt_and_hash(HS = #noise_hs{ ss = SS0 }, PlainText) -> {ok, HS#noise_hs{ ss = SS1 }, CipherText}. decrypt_and_hash(HS = #noise_hs{ ss = SS0 }, CipherText) -> - {ok, SS1, PlainText} = enoise_sym_state:decrypt_and_hash(SS0, CipherText), - {ok, HS#noise_hs{ ss = SS1 }, PlainText}. - + case enoise_sym_state:decrypt_and_hash(SS0, CipherText) of + {ok, SS1, PlainText} -> + {ok, HS#noise_hs{ ss = SS1 }, PlainText}; + {error, Reason} -> + {error, Reason} + end.