]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_rtp_asterisk: Allow only UDP ICE candidates.
authorJoshua Colp <jcolp@digium.com>
Wed, 8 Oct 2014 18:44:30 +0000 (18:44 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 8 Oct 2014 18:44:30 +0000 (18:44 +0000)
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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@424852 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_rtp_asterisk.c

index da1c5c205b95e4f7b32b34e2016c13b7eb9f9737..53ab6952a301b78537efa3251612cfaf4bff75fa 100644 (file)
@@ -494,6 +494,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_engine_ice_candidate *remote_candidate;
 
+       /* ICE sessions only support UDP candidates */
+       if (strcmp(candidate->transport, "UDP")) {
+               return;
+       }
+
        if (!rtp->ice_proposed_remote_candidates &&
                        !(rtp->ice_proposed_remote_candidates = ao2_container_alloc(1, NULL, ice_candidate_cmp))) {
                return;