]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 18 Nov 2008 23:26:25 +0000 (23:26 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 18 Nov 2008 23:26:25 +0000 (23:26 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10447 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_rtp.h
src/mod/endpoints/mod_sofia/mod_sofia.c
src/switch_rtp.c

index c398eb95c2ea90367a4b778b4299ca1cc0843426..03141d51eb6c84014a9419bcbe085df4dd835cc8 100644 (file)
@@ -111,7 +111,7 @@ SWITCH_DECLARE(switch_port_t) switch_rtp_set_end_port(switch_port_t port);
 SWITCH_DECLARE(switch_port_t) switch_rtp_request_port(const char *ip);
 SWITCH_DECLARE(void) switch_rtp_release_port(const char *ip, switch_port_t port);
 
-SWITCH_DECLARE(void) switch_rtp_change_interval(switch_rtp_t *rtp_session, uint32_t ms_per_packet, uint32_t samples_per_interval);
+SWITCH_DECLARE(switch_status_t) switch_rtp_change_interval(switch_rtp_t *rtp_session, uint32_t ms_per_packet, uint32_t samples_per_interval);
 /*! 
   \brief create a new RTP session handle
   \param new_rtp_session a poiter to aim at the new session
index 68ebb2e633bbf31cfb211c97069a86837c24c540..5395929ef413ca612c638ebf2acea3bba6620069 100644 (file)
@@ -757,9 +757,12 @@ static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_f
                                                                                        tech_pvt->read_codec.implementation->samples_per_packet;
                                                                        }
                                                                        
-                                                                       switch_rtp_change_interval(tech_pvt->rtp_session, 
-                                                                                                                          tech_pvt->read_codec.implementation->samples_per_packet,
-                                                                                                                          tech_pvt->codec_ms * 1000);
+                                                                       if (switch_rtp_change_interval(tech_pvt->rtp_session, 
+                                                                                                                                  tech_pvt->read_codec.implementation->samples_per_packet,
+                                                                                                                                  tech_pvt->codec_ms * 1000) != SWITCH_STATUS_SUCCESS) {
+                                                                               switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+                                                                               
+                                                                       }
 
                                                                        tech_pvt->check_frames = MAX_CODEC_CHECK_FRAMES;
                                                                }
index cbc311322a947bb71b296d95a7f8357e6941d068..17d751346d365f11782c40b69d3efc36e4142273 100644 (file)
@@ -754,7 +754,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_add_crypto_key(switch_rtp_t *rtp_sess
        return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_DECLARE(void) switch_rtp_change_interval(switch_rtp_t *rtp_session, uint32_t ms_per_packet, uint32_t samples_per_interval)
+SWITCH_DECLARE(switch_status_t) switch_rtp_change_interval(switch_rtp_t *rtp_session, uint32_t ms_per_packet, uint32_t samples_per_interval)
 {
        rtp_session->ms_per_packet = ms_per_packet;
        rtp_session->samples_per_interval = rtp_session->conf_samples_per_interval = samples_per_interval;
@@ -764,11 +764,19 @@ SWITCH_DECLARE(void) switch_rtp_change_interval(switch_rtp_t *rtp_session, uint3
                if (rtp_session->timer.timer_interface) {
                        switch_core_timer_destroy(&rtp_session->timer);
                }
-               switch_core_timer_init(&rtp_session->timer, rtp_session->timer_name, ms_per_packet / 1000, samples_per_interval, rtp_session->pool);
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
-                                                 "RE-Starting timer [%s] %d bytes per %dms\n", rtp_session->timer_name, samples_per_interval, ms_per_packet);
+               if (switch_core_timer_init(&rtp_session->timer, 
+                                                                  rtp_session->timer_name, ms_per_packet / 1000, samples_per_interval, rtp_session->pool) == SWITCH_STATUS_SUCCESS) {
+                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+                                                         "RE-Starting timer [%s] %d bytes per %dms\n", rtp_session->timer_name, samples_per_interval, ms_per_packet);
+               } else {
+                       memset(&rtp_session->timer, 0, sizeof(rtp_session->timer));
+                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
+                                                         "Problem RE-Starting timer [%s] %d bytes per %dms\n", rtp_session->timer_name, samples_per_interval, ms_per_packet);
+                       return SWITCH_STATUS_FALSE;
+               }
        }
                
+       return SWITCH_STATUS_SUCCESS;
 }
 
 SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session,