[Freeswitch-svn] [commit] r4344 - in freeswitch/trunk/src: . include mod/endpoints/mod_sofia
Author: anthm Date: Wed Feb 21 16:46:32 2007 New Revision: 4344 Modified: freeswitch/trunk/src/include/switch_core.h freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/trunk/src/switch_core.c Log: try to pass 2833-pt across calls Modified: freeswitch/trunk/src/include/switch_core.h ============================================================================== --- freeswitch/trunk/src/include/switch_core.h (original) +++ freeswitch/trunk/src/include/switch_core.h Wed Feb 21 16:46:32 2007 @@ -1454,6 +1454,14 @@ \brief Initiate Globals */ SWITCH_DECLARE(void) switch_core_set_globals(void); + +/*! + \brief indicate if 2 sessions are the same type + \param a the first session + \param b the second session + \return TRUE or FALSE +*/ +SWITCH_DECLARE(uint8_t) switch_core_session_compare(switch_core_session_t *a, switch_core_session_t *b); ///\} /*! Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Wed Feb 21 16:46:32 2007 @@ -317,6 +317,7 @@ switch_payload_t pt; switch_mutex_t *flag_mutex; switch_payload_t te; + switch_payload_t bte; nua_handle_t *nh; nua_handle_t *nh2; su_home_t *home; @@ -859,7 +860,11 @@ tech_pvt->flags = profile->flags; switch_mutex_unlock(tech_pvt->flag_mutex); tech_pvt->profile = profile; - tech_pvt->te = profile->te; + if (tech_pvt->bte) { + tech_pvt->te = tech_pvt->bte; + } else { + tech_pvt->te = profile->te; + } tech_pvt->session = session; tech_pvt->home = su_home_new(sizeof(*tech_pvt->home)); @@ -2310,7 +2315,15 @@ //switch_channel_t *channel = switch_core_session_get_channel(session); switch_ivr_transfer_variable(session, nsession, SOFIA_REPLACES_HEADER); switch_ivr_transfer_variable(session, nsession, SOFIA_SIP_HEADER_PREFIX_T); - + if (switch_core_session_compare(session, nsession)) { + /* It's another sofia channel! so lets cache what they use as a pt for telephone event so + we can keep it the same + */ + private_object_t *ctech_pvt; + ctech_pvt = switch_core_session_get_private(session); + assert(ctech_pvt != NULL); + tech_pvt->bte = ctech_pvt->te; + } } done: @@ -2328,7 +2341,7 @@ int ptime = 0, dptime = 0; tech_pvt = switch_core_session_get_private(session); - assert(tech_pvt != NULL); + assert(tech_pvt != NULL); channel = switch_core_session_get_channel(session); Modified: freeswitch/trunk/src/switch_core.c ============================================================================== --- freeswitch/trunk/src/switch_core.c (original) +++ freeswitch/trunk/src/switch_core.c Wed Feb 21 16:46:32 2007 @@ -4466,6 +4466,14 @@ return SWITCH_STATUS_SUCCESS; } +SWITCH_DECLARE(uint8_t) switch_core_session_compare(switch_core_session_t *a, switch_core_session_t *b) +{ + assert(a != NULL); + assert(b != NULL); + + return (a->endpoint_interface == b->endpoint_interface); +} + /* For Emacs: * Local Variables: * mode:c
participants (1)
-
Freeswitch SVN