From 006b54a8ebf69ecc5b8a8259e95ac71d29c79973 Mon Sep 17 00:00:00 2001
From: "Dr. Stephen Henson" <steve@openssl.org>
Date: Wed, 25 May 2011 14:30:20 +0000
Subject: [PATCH] Oops use up to date patch for PR#2506

---
 ssl/d1_lib.c  | 13 ++++++++++++-
 ssl/d1_srvr.c |  5 ++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ssl/d1_lib.c b/ssl/d1_lib.c
index fafc5c0bc6..9fe6b2b8f7 100644
--- a/ssl/d1_lib.c
+++ b/ssl/d1_lib.c
@@ -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);
         }
diff --git a/ssl/d1_srvr.c b/ssl/d1_srvr.c
index 2d63199dd6..3a0b4d2dde 100644
--- a/ssl/d1_srvr.c
+++ b/ssl/d1_srvr.c
@@ -150,6 +150,7 @@ int dtls1_accept(SSL *s)
 	unsigned long alg_k;
 	int ret= -1;
 	int new_state,state,skip=0;
+	int listen;
 
 	RAND_add(&Time,sizeof(Time),0);
 	ERR_clear_error();
@@ -159,6 +160,8 @@ int dtls1_accept(SSL *s)
 		cb=s->info_callback;
 	else if (s->ctx->info_callback != NULL)
 		cb=s->ctx->info_callback;
+	
+	listen = s->d1->listen;
 
 	/* init things to blank */
 	s->in_handshake++;
@@ -274,7 +277,7 @@ int dtls1_accept(SSL *s)
 			s->init_num=0;
 
 			/* If we're just listening, stop here */
-			if (s->d1->listen && s->state == SSL3_ST_SW_SRVR_HELLO_A)
+			if (listen && s->state == SSL3_ST_SW_SRVR_HELLO_A)
 				{
 				ret = 2;
 				s->d1->listen = 0;
-- 
2.25.1