]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5959 FS-5958
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 25 Nov 2013 18:08:17 +0000 (12:08 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 25 Nov 2013 18:08:17 +0000 (12:08 -0600)
src/mod/endpoints/mod_sofia/sofia.c
src/switch_core_media.c
src/switch_rtp.c

index cd566c22bd967a736eb52b8ee9f184c0f612849a..f9fc330c7173bdd6da50e5b126b78d60ca74a0e8 100644 (file)
@@ -6478,7 +6478,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
                        switch_channel_set_flag(tech_pvt->channel, CF_REINVITE);
 
                        if (tech_pvt->mparams.num_codecs) {
-                               match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_REQUEST);
+                               match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_RESPONSE);
                        }
                        if (match) {
                                if (switch_core_media_choose_port(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO, 0) != SWITCH_STATUS_SUCCESS) {
index 25af9b4e2934f0eaaf54aa5ecffb57dfcf953463..873519eb11e9a6b50c708cb5fe7d856bf8b35b4f 100644 (file)
@@ -497,6 +497,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_payload_code(switch_core
                        recv_pt = pmap->recv_pt;
                        fmtp = pmap->rm_fmtp;
                        found++;
+                       break;
                }
        }
        switch_mutex_unlock(smh->sdp_mutex);
@@ -602,7 +603,12 @@ SWITCH_DECLARE(payload_map_t *) switch_core_media_add_payload_map(switch_core_se
 
 
        if (sdp_type == SDP_TYPE_REQUEST || !exists) {
+               int b4 = pmap->pt;
                pmap->pt = (switch_payload_t)  (local_pt ? local_pt : pt);
+
+               if (b4 == 97 && pmap->pt == 109) {
+                       abort();
+               }
        }
 
        if (negotiated) {
@@ -6354,7 +6360,7 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess
                                                pass_fmtp = switch_channel_get_variable(session->channel, "rtp_video_fmtp");
                                        }
                                }
-
+                               
                                if (pass_fmtp) {
                                        switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), "a=fmtp:%d %s\n", v_engine->cur_payload_map->pt, pass_fmtp);
                                }
@@ -6433,6 +6439,10 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess
                                                        fmtp = switch_event_get_header(map, imp->iananame);
                                                }
                                                
+                                               if (smh->fmtps[i]) {
+                                                       fmtp = smh->fmtps[i];
+                                               }
+                                               
                                                if (zstr(fmtp)) fmtp = imp->fmtp;
 
                                                if (zstr(fmtp)) fmtp = (char *) pass_fmtp;
index 490137e08bd69db556bcd5dd4400bbbec03938d1..6e6c594f05f8979627db56e166fc0431c8aa3280 100644 (file)
@@ -5047,6 +5047,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
                                payload_map_t *pmap;
                                switch_mutex_lock(rtp_session->flag_mutex);
                                for (pmap = *rtp_session->pmaps; pmap && pmap->allocated; pmap = pmap->next) {                                  
+                                       
                                        if (!pmap->negotiated) {
                                                continue;
                                        }
@@ -5056,6 +5057,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
                                                if (pmapP) {
                                                        *pmapP = pmap;
                                                }
+                                               break;
                                        }
                                }
                                switch_mutex_unlock(rtp_session->flag_mutex);
@@ -5064,6 +5066,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
                        if (!accept_packet &&
                                !(rtp_session->rtp_bugs & RTP_BUG_ACCEPT_ANY_PAYLOAD) && !(rtp_session->rtp_bugs & RTP_BUG_ACCEPT_ANY_PACKETS)) {
                                /* drop frames of incorrect payload number and return CNG frame instead */
+
                                return_cng_frame();
                        }
                }