From: Joshua Colp Date: Wed, 29 Apr 2020 20:42:43 +0000 (-0500) Subject: Revert "Revert "res_rtp_asterisk: Free payload when error on insertion to data buffer"" X-Git-Tag: certified/16.8-cert2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40d379f59e12768e211622a9f322e3ebc1c2c336;p=thirdparty%2Fasterisk.git Revert "Revert "res_rtp_asterisk: Free payload when error on insertion to data buffer"" This reverts commit fe3dc091b57bf16ba62e185fe05f77069062a3b1. Reason for revert: This will be merged once 16.8-cert1 is released. Change-Id: I5c29f96a70ed7e1fa146a69e7b48bfe31cbee929 --- diff --git a/main/data_buffer.c b/main/data_buffer.c index cfc323c680..85e79711c4 100644 --- a/main/data_buffer.c +++ b/main/data_buffer.c @@ -254,7 +254,7 @@ int ast_data_buffer_put(struct ast_data_buffer *buffer, size_t pos, void *payloa AST_LIST_TRAVERSE_SAFE_END; if (inserted == -1) { - return 0; + return -1; } if (!inserted) { diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index e3f4e54441..134eebc07c 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -4897,7 +4897,9 @@ static int rtp_raw_write(struct ast_rtp_instance *instance, struct ast_frame *fr if (payload) { payload->size = packet_len; memcpy(payload->buf, rtpheader, packet_len); - ast_data_buffer_put(rtp->send_buffer, rtp->seqno, payload); + if (ast_data_buffer_put(rtp->send_buffer, rtp->seqno, payload) == -1) { + ast_free(payload); + } } } @@ -7847,7 +7849,9 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc payload->size = res; memcpy(payload->buf, rtpheader, res); - ast_data_buffer_put(rtp->recv_buffer, seqno, payload); + if (ast_data_buffer_put(rtp->recv_buffer, seqno, payload) == -1) { + ast_free(payload); + } /* If this sequence number is removed that means we had a gap and this packet has filled it in * some. Since it was part of the gap we will have already added any other missing sequence numbers