]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix codec renegotiation on hold/reinvite issue
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 16 Dec 2013 18:46:29 +0000 (23:46 +0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 16 Dec 2013 18:46:29 +0000 (23:46 +0500)
src/switch_core_media.c

index cc960c886df25c863683fecde96f94f997c3f2aa..7ffd10eed4d29d080fbb9fbf21c57105cac98de6 100644 (file)
@@ -2844,6 +2844,13 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s
                }
        }
 
+       if (session->bugs) {
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, 
+                                                 "Session is connected to a media bug. "
+                                                 "Re-Negotiation implicitly disabled.\n");
+               reneg = 0;
+       }
+
        if (!reneg && smh->num_negotiated_codecs) {
                codec_array = smh->negotiated_codecs;
                total_codecs = smh->num_negotiated_codecs;
@@ -3278,7 +3285,8 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s
 
                                match = 1;
                                a_engine->codec_negotiated = 1;
-                               
+                               smh->num_negotiated_codecs = 0;
+
                                for(j = 0; j < m_idx; j++) {
                                        payload_map_t *pmap = switch_core_media_add_payload_map(session, 
                                                                                                                                                        SWITCH_MEDIA_TYPE_AUDIO,
@@ -3329,7 +3337,6 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s
                                        pmap->rm_fmtp = switch_core_session_strdup(session, (char *) mmap->rm_fmtp);
                                                
                                        pmap->agreed_pt = (switch_payload_t) mmap->rm_pt;
-                                       smh->num_negotiated_codecs = 0;
                                        smh->negotiated_codecs[smh->num_negotiated_codecs++] = mimp;
                                        pmap->recv_pt = (switch_payload_t)mmap->rm_pt;