Don't disable TLS v1.2 by default now.
[openssl.git] / ssl / d1_lib.c
index fafc5c0bc63a5dd0e6bca874b4d6131b1e5f55ff..c3b77c889bd8c4417b048842ba54b9e2b6ce7148 100644 (file)
@@ -133,15 +133,26 @@ static void dtls1_clear_queues(SSL *s)
        {
     pitem *item = NULL;
     hm_fragment *frag = NULL;
-       
+       DTLS1_RECORD_DATA *rdata;
+
     while( (item = pqueue_pop(s->d1->unprocessed_rcds.q)) != NULL)
         {
+               rdata = (DTLS1_RECORD_DATA *) item->data;
+               if (rdata->rbuf.buf)
+                       {
+                       OPENSSL_free(rdata->rbuf.buf);
+                       }
         OPENSSL_free(item->data);
         pitem_free(item);
         }
 
     while( (item = pqueue_pop(s->d1->processed_rcds.q)) != NULL)
         {
+               rdata = (DTLS1_RECORD_DATA *) item->data;
+               if (rdata->rbuf.buf)
+                       {
+                       OPENSSL_free(rdata->rbuf.buf);
+                       }
         OPENSSL_free(item->data);
         pitem_free(item);
         }
@@ -193,7 +204,8 @@ void dtls1_clear(SSL *s)
     pqueue buffered_messages;
        pqueue sent_messages;
        pqueue buffered_app_data;
-       
+       unsigned int mtu;
+
        if (s->d1)
                {
                unprocessed_rcds = s->d1->unprocessed_rcds.q;
@@ -201,6 +213,7 @@ void dtls1_clear(SSL *s)
                buffered_messages = s->d1->buffered_messages;
                sent_messages = s->d1->sent_messages;
                buffered_app_data = s->d1->buffered_app_data.q;
+               mtu = s->d1->mtu;
 
                dtls1_clear_queues(s);
 
@@ -211,6 +224,11 @@ void dtls1_clear(SSL *s)
                        s->d1->cookie_len = sizeof(s->d1->cookie);
                        }
 
+               if (SSL_get_options(s) & SSL_OP_NO_QUERY_MTU)
+                       {
+                       s->d1->mtu = mtu;
+                       }
+
                s->d1->unprocessed_rcds.q = unprocessed_rcds;
                s->d1->processed_rcds.q = processed_rcds;
                s->d1->buffered_messages = buffered_messages;
@@ -387,7 +405,7 @@ int dtls1_handle_timeout(SSL *s)
                {
                /* fail the connection, enough alerts have been sent */
                SSLerr(SSL_F_DTLS1_HANDLE_TIMEOUT,SSL_R_READ_TIMEOUT_EXPIRED);
-               return 0;
+               return -1;
                }
 
        state->timeout.read_timeouts++;