while ((item = pqueue_pop(s->d1->sent_messages)) != NULL) {
frag = (hm_fragment *)item->data;
+
+ if (frag->msg_header.is_ccs
+ && frag->msg_header.saved_retransmit_state.wrlmethod != NULL
+ && s->rlayer.wrl != frag->msg_header.saved_retransmit_state.wrl) {
+ /*
+ * If we're freeing the CCS then we're done with the old wrl and it
+ * can bee freed
+ */
+ frag->msg_header.saved_retransmit_state.wrlmethod->free(frag->msg_header.saved_retransmit_state.wrl);
+ }
+
dtls1_hm_fragment_free(frag);
pitem_free(item);
}
if (s == NULL)
return;
- DTLS_RECORD_LAYER_free(&s->rlayer);
-
- ssl3_free(ssl);
-
if (s->d1 != NULL) {
dtls1_clear_queues(s);
pqueue_free(s->d1->buffered_messages);
pqueue_free(s->d1->sent_messages);
}
+ DTLS_RECORD_LAYER_free(&s->rlayer);
+
+ ssl3_free(ssl);
+
OPENSSL_free(s->d1);
s->d1 = NULL;
}
{
if (!frag)
return;
- if (frag->msg_header.is_ccs) {
- /*
- * If we're freeing the CCS then we're done with the old wrl and it
- * can bee freed
- */
- if (frag->msg_header.saved_retransmit_state.wrlmethod != NULL)
- frag->msg_header.saved_retransmit_state.wrlmethod->free(frag->msg_header.saved_retransmit_state.wrl);
- }
+
OPENSSL_free(frag->fragment);
OPENSSL_free(frag->reassembly);
OPENSSL_free(frag);