summaryrefslogtreecommitdiffstats
path: root/ssl/s3_both.c
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-09-07 22:00:36 +0100
committerMatt Caswell <matt@openssl.org>2015-10-30 08:32:44 +0000
commit473483d42db5d176946323ac390fcd3c80ea40e6 (patch)
treeebbfea748160a0ed690841b795c629cfc4091d31 /ssl/s3_both.c
parent76af303761670cd54a93f1b196bcd7b2eaf7c29c (diff)
Implement DTLS client move to new state machine
Move all DTLS client side processing into the new state machine code. A subsequent commit will clean up the old dead code. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'ssl/s3_both.c')
-rw-r--r--ssl/s3_both.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/ssl/s3_both.c b/ssl/s3_both.c
index 1829feb243..2afde72a63 100644
--- a/ssl/s3_both.c
+++ b/ssl/s3_both.c
@@ -461,8 +461,15 @@ enum WORK_STATE tls_finish_handshake(SSL *s, enum WORK_STATE wst)
/* clean a few things up */
ssl3_cleanup_key_block(s);
- BUF_MEM_free(s->init_buf);
- s->init_buf = NULL;
+
+ if (!SSL_IS_DTLS(s)) {
+ /*
+ * We don't do this in DTLS because we may still need the init_buf
+ * in case there are any unexpected retransmits
+ */
+ BUF_MEM_free(s->init_buf);
+ s->init_buf = NULL;
+ }
ssl_free_wbio_buffer(s);