diff options
author | Ingela Anderton Andin <[email protected]> | 2019-05-06 15:51:22 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2019-05-06 15:55:43 +0200 |
commit | 6e190b012dd5a304fc42a5f3bb58ff173a23eb66 (patch) | |
tree | fb80bddfc7532c105e6ced4626f4c55366f18feb | |
parent | 68a90eb777b5c1e48c0760337fbf2b0b8a9aa6aa (diff) | |
download | otp-6e190b012dd5a304fc42a5f3bb58ff173a23eb66.tar.gz otp-6e190b012dd5a304fc42a5f3bb58ff173a23eb66.tar.bz2 otp-6e190b012dd5a304fc42a5f3bb58ff173a23eb66.zip |
ssl: Add check when to toggle internal active N
Missing check of size of user_data_buffer made internal socket
behave as an active socket instead of active N.
Also correct indentation.
-rw-r--r-- | lib/ssl/src/tls_connection.erl | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/ssl/src/tls_connection.erl b/lib/ssl/src/tls_connection.erl index 114710a92e..15e3f30651 100644 --- a/lib/ssl/src/tls_connection.erl +++ b/lib/ssl/src/tls_connection.erl @@ -152,19 +152,21 @@ next_record(#state{protocol_buffers = connection_states = ConnectionStates, ssl_options = #ssl_options{padding_check = Check}} = State) -> next_record(State, CipherTexts, ConnectionStates, Check); -next_record(#state{protocol_buffers = #protocol_buffers{tls_cipher_texts = []}, - protocol_specific = #{active_n_toggle := true, active_n := N} = ProtocolSpec, +next_record(#state{user_data_buffer = {_,0,_}, + protocol_buffers = #protocol_buffers{tls_cipher_texts = []}, + protocol_specific = #{active_n_toggle := true, + active_n := N} = ProtocolSpec, static_env = #static_env{socket = Socket, close_tag = CloseTag, transport_cb = Transport} - } = State) -> + } = State) -> case tls_socket:setopts(Transport, Socket, [{active, N}]) of ok -> - {no_record, State#state{protocol_specific = ProtocolSpec#{active_n_toggle => false}}}; + {no_record, State#state{protocol_specific = ProtocolSpec#{active_n_toggle => false}}}; _ -> - self() ! {CloseTag, Socket}, - {no_record, State} - end; + self() ! {CloseTag, Socket}, + {no_record, State} + end; next_record(State) -> {no_record, State}. |