diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2009-04-14 14:20:57 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2009-04-14 14:20:57 +0000 |
commit | 3c0ce01cea2b601c5e20683084687b5a1b9bf331 (patch) | |
tree | 7d42a36d9df0606e17910a574c6660ddc24baa9d /ssl/d1_lib.c | |
parent | 9fcbefebdb3170bc91b4220505dd59a5b474f71f (diff) |
PR: 1827
Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de>
Approved by: steve@openssl.org
Updated patch for PR #1827
Diffstat (limited to 'ssl/d1_lib.c')
-rw-r--r-- | ssl/d1_lib.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ssl/d1_lib.c b/ssl/d1_lib.c index bd28b75e84..be47541440 100644 --- a/ssl/d1_lib.c +++ b/ssl/d1_lib.c @@ -98,6 +98,7 @@ int dtls1_new(SSL *s) d1->processed_rcds.q=pqueue_new(); d1->buffered_messages = pqueue_new(); d1->sent_messages=pqueue_new(); + d1->buffered_app_data.q=pqueue_new(); if ( s->server) { @@ -105,12 +106,13 @@ int dtls1_new(SSL *s) } if( ! d1->unprocessed_rcds.q || ! d1->processed_rcds.q - || ! d1->buffered_messages || ! d1->sent_messages) + || ! d1->buffered_messages || ! d1->sent_messages || ! d1->buffered_app_data.q) { if ( d1->unprocessed_rcds.q) pqueue_free(d1->unprocessed_rcds.q); if ( d1->processed_rcds.q) pqueue_free(d1->processed_rcds.q); if ( d1->buffered_messages) pqueue_free(d1->buffered_messages); if ( d1->sent_messages) pqueue_free(d1->sent_messages); + if ( d1->buffered_app_data.q) pqueue_free(d1->buffered_app_data.q); OPENSSL_free(d1); return (0); } @@ -159,6 +161,15 @@ void dtls1_free(SSL *s) } pqueue_free(s->d1->sent_messages); + while ( (item = pqueue_pop(s->d1->buffered_app_data.q)) != NULL) + { + frag = (hm_fragment *)item->data; + OPENSSL_free(frag->fragment); + OPENSSL_free(frag); + pitem_free(item); + } + pqueue_free(s->d1->buffered_app_data.q); + OPENSSL_free(s->d1); } |