]> 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:45:19 +0000 (18:45 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 8 Oct 2014 18:45:19 +0000 (18:45 +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
........

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

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

res/res_rtp_asterisk.c

index 5c5cfe59010e861edaec21c8063617a12aa8e478..6a49556f6ace629b1866e01a5c20a09a7def37fd 100644 (file)
@@ -519,6 +519,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;