Oops use up to date patch for PR#2506
diff --git a/ssl/d1_lib.c b/ssl/d1_lib.c index fafc5c0..9fe6b2b 100644 --- a/ssl/d1_lib.c +++ b/ssl/d1_lib.c
@@ -133,15 +133,26 @@ { 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 2d63199..3a0b4d2 100644 --- a/ssl/d1_srvr.c +++ b/ssl/d1_srvr.c
@@ -150,6 +150,7 @@ 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 @@ 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 @@ 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;