again:
/* if we're renegotiating, then there may be buffered records */
- if (dtls_retrieve_rlayer_buffered_record(rl, rl->processed_rcds)) {
+ if (dtls_retrieve_rlayer_buffered_record(rl, &rl->processed_rcds)) {
rl->num_recs = 1;
return OSSL_RECORD_RETURN_SUCCESS;
}
*/
if (is_next_epoch) {
if (rl->in_init) {
- if (dtls_rlayer_buffer_record(rl, rl->unprocessed_rcds,
+ if (dtls_rlayer_buffer_record(rl, &rl->unprocessed_rcds,
rr->seq_num) < 0) {
/* RLAYERfatal() already called */
return OSSL_RECORD_RETURN_FATAL;
rbuf->left = 0;
}
- if (rl->unprocessed_rcds != NULL) {
- while ((item = pqueue_pop(rl->unprocessed_rcds)) != NULL) {
- rdata = (DTLS_RLAYER_RECORD_DATA *)item->data;
- /* Push to the next record layer */
- ret &= BIO_write_ex(rl->next, rdata->packet, rdata->packet_length,
- &written);
- OPENSSL_free(rdata->rbuf.buf);
- OPENSSL_free(item->data);
- pitem_free(item);
- }
- pqueue_free(rl->unprocessed_rcds);
+ while ((item = pqueue_pop(&rl->unprocessed_rcds)) != NULL) {
+ rdata = (DTLS_RLAYER_RECORD_DATA *)item->data;
+ /* Push to the next record layer */
+ ret &= BIO_write_ex(rl->next, rdata->packet, rdata->packet_length,
+ &written);
+ OPENSSL_free(rdata->rbuf.buf);
+ OPENSSL_free(item->data);
+ pitem_free(item);
}
- if (rl->processed_rcds!= NULL) {
- while ((item = pqueue_pop(rl->processed_rcds)) != NULL) {
- rdata = (DTLS_RLAYER_RECORD_DATA *)item->data;
- OPENSSL_free(rdata->rbuf.buf);
- OPENSSL_free(item->data);
- pitem_free(item);
- }
- pqueue_free(rl->processed_rcds);
+ while ((item = pqueue_pop(&rl->processed_rcds)) != NULL) {
+ rdata = (DTLS_RLAYER_RECORD_DATA *)item->data;
+ OPENSSL_free(rdata->rbuf.buf);
+ OPENSSL_free(item->data);
+ pitem_free(item);
}
return tls_free(rl) && ret;
if (ret != OSSL_RECORD_RETURN_SUCCESS)
return ret;
- (*retrl)->unprocessed_rcds = pqueue_new();
- (*retrl)->processed_rcds = pqueue_new();
-
- if ((*retrl)->unprocessed_rcds == NULL
- || (*retrl)->processed_rcds == NULL) {
- dtls_free(*retrl);
- *retrl = NULL;
- ERR_raise(ERR_LIB_SSL, ERR_R_SSL_LIB);
- return OSSL_RECORD_RETURN_FATAL;
- }
-
(*retrl)->isdtls = 1;
(*retrl)->epoch = epoch;
(*retrl)->in_init = 1;