]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix small issue
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 17 Jan 2008 21:59:35 +0000 (21:59 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 17 Jan 2008 21:59:35 +0000 (21:59 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7271 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_sofia/sofia_glue.c

index 3fd4f72f36f43236f9c048fdc37cc57abd07bee2..820338bd0807fd94ef9885c659e60826502eac72 100644 (file)
@@ -1583,7 +1583,7 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, sdp_session_t *
                                        crypto = attr->a_value;
                                        crypto_tag = atoi(crypto);
 
-                                       if (tech_pvt->remote_crypto_key) {
+                                       if (tech_pvt->remote_crypto_key && switch_rtp_ready(tech_pvt->rtp_session)) {
                                                if (crypto_tag && crypto_tag == tech_pvt->crypto_tag) {
                                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Existing key is still valid.\n");
                                                } else {
@@ -1594,9 +1594,12 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, sdp_session_t *
                                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Change Remote key to [%s]\n", crypto);
                                                                tech_pvt->remote_crypto_key = switch_core_session_strdup(tech_pvt->session, crypto);
                                                                tech_pvt->crypto_tag = crypto_tag;
-                                                               sofia_glue_add_crypto(tech_pvt, tech_pvt->remote_crypto_key, SWITCH_RTP_CRYPTO_RECV);
-                                                               switch_rtp_add_crypto_key(tech_pvt->rtp_session, SWITCH_RTP_CRYPTO_RECV, tech_pvt->crypto_tag, 
-                                                                                                                 tech_pvt->crypto_type, tech_pvt->remote_raw_key, SWITCH_RTP_KEY_LEN);
+                                                               
+                                                               if (switch_rtp_ready(tech_pvt->rtp_session)) {
+                                                                       sofia_glue_add_crypto(tech_pvt, tech_pvt->remote_crypto_key, SWITCH_RTP_CRYPTO_RECV);
+                                                                       switch_rtp_add_crypto_key(tech_pvt->rtp_session, SWITCH_RTP_CRYPTO_RECV, tech_pvt->crypto_tag, 
+                                                                                                                         tech_pvt->crypto_type, tech_pvt->remote_raw_key, SWITCH_RTP_KEY_LEN);
+                                                               }
                                                                got_crypto++;
                                                        } else {
                                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Ignoring unacceptable key\n");