res_rtp_asterisk: Allow only UDP ICE candidates.

The underlying library, pjnath, that res_rtp_asterisk uses for ICE
support does not have support for ICE-TCP. As candidates are
passed through directly to it this can cause error messages to occur
when it receives something unexpected (such as a TCP candidate).
This change merely ignores all non-UDP candidates so they never
reach pjnath.

ASTERISK-24326 #close
Reported by: Joshua Colp
........

Merged revisions 424852 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 424853 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 424854 from http://svn.asterisk.org/svn/asterisk/branches/13


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424855 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Joshua Colp
2014-10-08 18:47:32 +00:00
parent 5e50638539
commit 8b0089ea1d

View File

@@ -521,6 +521,11 @@ static void ast_rtp_ice_add_remote_candidate(struct ast_rtp_instance *instance,
struct ast_rtp *rtp = ast_rtp_instance_get_data(instance); struct ast_rtp *rtp = ast_rtp_instance_get_data(instance);
struct ast_rtp_engine_ice_candidate *remote_candidate; struct ast_rtp_engine_ice_candidate *remote_candidate;
/* ICE sessions only support UDP candidates */
if (strcmp(candidate->transport, "UDP")) {
return;
}
if (!rtp->ice_proposed_remote_candidates && if (!rtp->ice_proposed_remote_candidates &&
!(rtp->ice_proposed_remote_candidates = ao2_container_alloc(1, NULL, ice_candidate_cmp))) { !(rtp->ice_proposed_remote_candidates = ao2_container_alloc(1, NULL, ice_candidate_cmp))) {
return; return;