From 54b59a6270355787700d06de619735a4c4240608 Mon Sep 17 00:00:00 2001 From: Andreas Schultz Date: Wed, 4 May 2016 10:11:17 +0200 Subject: dtls: implement next_tls_record Conflicts: lib/ssl/src/dtls_connection.erl --- lib/ssl/src/dtls_connection.erl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'lib/ssl/src') diff --git a/lib/ssl/src/dtls_connection.erl b/lib/ssl/src/dtls_connection.erl index cb5db3f4c3..014e915e12 100644 --- a/lib/ssl/src/dtls_connection.erl +++ b/lib/ssl/src/dtls_connection.erl @@ -409,10 +409,19 @@ initial_state(Role, Host, Port, Socket, {SSLOptions, SocketOptions}, User, protocol_cb = ?MODULE }. -next_tls_record(<<>>, _State) -> - #alert{}; %% Place holder -next_tls_record(_, State) -> - {#ssl_tls{fragment = <<"place holder">>}, State}. +next_tls_record(Data, #state{protocol_buffers = #protocol_buffers{ + dtls_record_buffer = Buf0, + dtls_cipher_texts = CT0} = Buffers} = State0) -> + case dtls_record:get_dtls_records(Data, Buf0) of + {Records, Buf1} -> + CT1 = CT0 ++ Records, + next_record(State0#state{protocol_buffers = + Buffers#protocol_buffers{dtls_record_buffer = Buf1, + dtls_cipher_texts = CT1}}); + + #alert{} = Alert -> + Alert + end. next_record(#state{%%flight = #flight{state = finished}, protocol_buffers = -- cgit v1.2.3