diff options
author | Ingela Anderton Andin <[email protected]> | 2017-11-28 16:57:46 +0100 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2017-11-28 16:57:46 +0100 |
commit | 9064b82ad2013d69b4013c7874f02dfc5ae7a675 (patch) | |
tree | 703fdd10e381a9000af3a187301b67565c78d25b /lib/ssl/src | |
parent | 2de02457c36d594f953efa0003186c8d5bbe7b41 (diff) | |
download | otp-9064b82ad2013d69b4013c7874f02dfc5ae7a675.tar.gz otp-9064b82ad2013d69b4013c7874f02dfc5ae7a675.tar.bz2 otp-9064b82ad2013d69b4013c7874f02dfc5ae7a675.zip |
ssl: Make sure all possible data is delivered
Diffstat (limited to 'lib/ssl/src')
-rw-r--r-- | lib/ssl/src/tls_connection.erl | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/ssl/src/tls_connection.erl b/lib/ssl/src/tls_connection.erl index 96243db4ae..b0dd463846 100644 --- a/lib/ssl/src/tls_connection.erl +++ b/lib/ssl/src/tls_connection.erl @@ -141,12 +141,14 @@ next_record(#state{protocol_buffers = end; next_record(#state{protocol_buffers = #protocol_buffers{tls_packets = [], tls_cipher_texts = []}, socket = Socket, + close_tag = CloseTag, transport_cb = Transport} = State) -> case tls_socket:setopts(Transport, Socket, [{active,once}]) of ok -> {no_record, State}; _ -> - {socket_closed, State} + self() ! {CloseTag, Socket}, + {no_record, State} end; next_record(State) -> {no_record, State}. @@ -154,15 +156,10 @@ next_record(State) -> next_event(StateName, Record, State) -> next_event(StateName, Record, State, []). -next_event(StateName, socket_closed, State, _) -> - ssl_connection:handle_normal_shutdown(?ALERT_REC(?FATAL, ?CLOSE_NOTIFY), StateName, State), - {stop, {shutdown, transport_closed}, State}; next_event(connection = StateName, no_record, State0, Actions) -> case next_record_if_active(State0) of {no_record, State} -> ssl_connection:hibernate_after(StateName, State, Actions); - {socket_closed, State} -> - next_event(StateName, socket_closed, State, Actions); {#ssl_tls{} = Record, State} -> {next_state, StateName, State, [{next_event, internal, {protocol_record, Record}} | Actions]}; {#alert{} = Alert, State} -> |