While the ICE negotiation is occurring leave strictrtp in an open state, media can...
authorJoshua Colp <jcolp@digium.com>
Thu, 28 Feb 2013 21:59:56 +0000 (21:59 +0000)
committerJoshua Colp <jcolp@digium.com>
Thu, 28 Feb 2013 21:59:56 +0000 (21:59 +0000)
........

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

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

res/res_rtp_asterisk.c

index 560314f..fadace7 100644 (file)
@@ -536,6 +536,7 @@ static void ast_rtp_ice_start(struct ast_rtp_instance *instance)
                pj_ice_sess_start_check(rtp->ice);
                pj_timer_heap_poll(timerheap, NULL);
                rtp->ice_started = 1;
+               rtp->strict_rtp_state = STRICT_RTP_OPEN;
        }
 }
 
@@ -1026,7 +1027,7 @@ static void ast_rtp_on_ice_complete(pj_ice_sess *ice, pj_status_t status)
 {
        struct ast_rtp *rtp = ice->user_data;
 
-       if (status != PJ_SUCCESS || !strictrtp) {
+       if (!strictrtp) {
                return;
        }
 
@@ -3955,7 +3956,7 @@ static void ast_rtp_remote_address_set(struct ast_rtp_instance *instance, struct
 
        rtp->rxseqno = 0;
 
-       if (strictrtp) {
+       if (strictrtp && rtp->strict_rtp_state != STRICT_RTP_OPEN) {
                rtp->strict_rtp_state = STRICT_RTP_LEARN;
                rtp_learning_seq_init(rtp, rtp->seqno);
        }