res_rtp_asterisk: Don't assume setting retrans props means to enable.

The "value" passed in when setting an RTP property determines
whether it should be enabled or disabled. The RTP send and
receive retrans props did not examine this to know if the
buffers should be enabled. They assumed they always should be.

This change makes it so that the "value" passed in is
respected.

ASTERISK-28939

Change-Id: I9244cdbdc5fd065c7f6b02cbfa572bc55c7123dc
This commit is contained in:
Joshua C. Colp 2020-06-08 08:27:53 -03:00 committed by Friendly Automation
parent ef608dec78
commit 49b204ed8a
1 changed files with 22 additions and 3 deletions

View File

@ -8236,10 +8236,29 @@ static void ast_rtp_prop_set(struct ast_rtp_instance *instance, enum ast_rtp_pro
} else if (property == AST_RTP_PROPERTY_ASYMMETRIC_CODEC) {
rtp->asymmetric_codec = value;
} else if (property == AST_RTP_PROPERTY_RETRANS_SEND) {
rtp->send_buffer = ast_data_buffer_alloc(ast_free_ptr, DEFAULT_RTP_SEND_BUFFER_SIZE);
if (value) {
if (!rtp->send_buffer) {
rtp->send_buffer = ast_data_buffer_alloc(ast_free_ptr, DEFAULT_RTP_SEND_BUFFER_SIZE);
}
} else {
if (rtp->send_buffer) {
ast_data_buffer_free(rtp->send_buffer);
rtp->send_buffer = NULL;
}
}
} else if (property == AST_RTP_PROPERTY_RETRANS_RECV) {
rtp->recv_buffer = ast_data_buffer_alloc(ast_free_ptr, DEFAULT_RTP_RECV_BUFFER_SIZE);
AST_VECTOR_INIT(&rtp->missing_seqno, 0);
if (value) {
if (!rtp->recv_buffer) {
rtp->recv_buffer = ast_data_buffer_alloc(ast_free_ptr, DEFAULT_RTP_RECV_BUFFER_SIZE);
AST_VECTOR_INIT(&rtp->missing_seqno, 0);
}
} else {
if (rtp->recv_buffer) {
ast_data_buffer_free(rtp->recv_buffer);
rtp->recv_buffer = NULL;
AST_VECTOR_FREE(&rtp->missing_seqno);
}
}
}
}