aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorIngela Anderton Andin <[email protected]>2019-05-06 15:51:22 +0200
committerIngela Anderton Andin <[email protected]>2019-05-06 15:55:43 +0200
commit6e190b012dd5a304fc42a5f3bb58ff173a23eb66 (patch)
treefb80bddfc7532c105e6ced4626f4c55366f18feb /lib
parent68a90eb777b5c1e48c0760337fbf2b0b8a9aa6aa (diff)
downloadotp-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.
Diffstat (limited to 'lib')
-rw-r--r--lib/ssl/src/tls_connection.erl16
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}.