]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9356 #resolve [DTMF not recognized when coming from a Cisco SIP trunk]
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 18 Jul 2016 16:11:32 +0000 (11:11 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 18 Jul 2016 16:11:32 +0000 (11:11 -0500)
src/include/switch_core_media.h
src/mod/endpoints/mod_sofia/sofia.c
src/switch_core_media.c

index 27ab840e3824b5619a29e5047a219f966a87640a..988ebbea423cd55c981cd6764a01bb359cfed10b 100644 (file)
@@ -75,6 +75,7 @@ typedef enum {
        SCMF_RTP_AUTOFLUSH_DURING_BRIDGE,
        SCMF_MULTI_ANSWER_AUDIO,
        SCMF_MULTI_ANSWER_VIDEO,
+       SCMF_RECV_SDP,
        SCMF_MAX
 } switch_core_media_flag_t;
 
index 303330c0e0ed4a5b835b43383d287d5a8eb21e90..bf7ae7b21fc18156c8bb3aeaaad25b6d5d1ddfad 100644 (file)
@@ -7403,9 +7403,10 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
                                                switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED_NOSDP");
                                                switch_core_media_choose_port(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO, 0);
                                                switch_core_media_prepare_codecs(session, 1);
-                                               switch_core_media_gen_local_sdp(session, SDP_TYPE_RESPONSE, NULL, 0, NULL, 0);
-                                               sofia_set_flag_locked(tech_pvt, TFLAG_3PCC);
                                                switch_channel_set_state(channel, CS_HIBERNATE);
+                                               switch_core_media_gen_local_sdp(session, SDP_TYPE_REQUEST, NULL, 0, NULL, 0);
+                                               sofia_set_flag_locked(tech_pvt, TFLAG_3PCC);
+                                               
                                                if (sofia_use_soa(tech_pvt)) {
                                                        nua_respond(tech_pvt->nh, SIP_200_OK,
                                                                                SIPTAG_CONTACT_STR(tech_pvt->profile->url),
index c73b73fa00cddd6b000b6be0c20ad7edd4489617..ab3918bc909506c925c6e769ba93be094bd2a0e7 100644 (file)
@@ -3766,7 +3766,9 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s
        a_engine->new_dtls = 1;
        a_engine->new_ice = 1;
        a_engine->reject_avp = 0;
-                       
+
+       switch_media_handle_set_media_flag(smh, SCMF_RECV_SDP);
+       
        switch_core_session_parse_crypto_prefs(session);
 
        clear_pmaps(a_engine);
@@ -8258,7 +8260,7 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess
  video:
 
 
-       if (!switch_channel_test_flag(session->channel, CF_VIDEO_POSSIBLE) && sdp_type == SDP_TYPE_REQUEST) {
+       if (!switch_channel_test_flag(session->channel, CF_VIDEO_POSSIBLE) && switch_media_handle_test_media_flag(smh, SCMF_RECV_SDP)) {
                has_vid = 0;
        } else {
                int i;