From da14c819c0b14ed2598ceb1fc255541af4e5cd71 Mon Sep 17 00:00:00 2001 From: Robert Joly Date: Wed, 18 Feb 2009 01:04:28 +0000 Subject: [PATCH] Moved some initialisation code when making an FS outgoing call so initialisation of some internal OpalConnection fields are done early enough. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12129 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_opal/mod_opal.cpp | 34 +++++++++++++------------ src/mod/endpoints/mod_opal/mod_opal.h | 18 ++++++------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/mod/endpoints/mod_opal/mod_opal.cpp b/src/mod/endpoints/mod_opal/mod_opal.cpp index 4526942535..7dc5394ed1 100644 --- a/src/mod/endpoints/mod_opal/mod_opal.cpp +++ b/src/mod/endpoints/mod_opal/mod_opal.cpp @@ -138,7 +138,7 @@ static switch_call_cause_t create_outgoing_channel(switch_core_session_t *sessio PString token; FSManager & manager = opal_process->GetManager(); - if (!manager.SetUpCall("local:", outbound_profile->destination_number, token)) { + if (!manager.SetUpCall("local:", outbound_profile->destination_number, token, outbound_profile)) { return SWITCH_CAUSE_INVALID_NUMBER_FORMAT; } @@ -156,19 +156,6 @@ static switch_call_cause_t create_outgoing_channel(switch_core_session_t *sessio *new_session = connection->GetSession(); - connection->SetLocalPartyName(outbound_profile->caller_id_number); - connection->SetDisplayName(outbound_profile->caller_id_name); - - - switch_caller_profile_t *caller_profile = switch_caller_profile_clone(*new_session, outbound_profile); - switch_channel_t *channel = switch_core_session_get_channel(*new_session); - char name[256] = "opal/"; - switch_copy_string(name + 5, outbound_profile->destination_number, sizeof(name)-5); - switch_channel_set_name(channel, name); - switch_channel_set_flag(channel, CF_OUTBOUND); - switch_channel_set_caller_profile(channel, caller_profile); - switch_channel_set_state(channel, CS_INIT); - return SWITCH_CAUSE_SUCCESS; } @@ -483,14 +470,14 @@ bool FSEndPoint::OnIncomingCall(OpalLocalConnection & connection) OpalLocalConnection *FSEndPoint::CreateConnection(OpalCall & call, void *userData) { - return new FSConnection(call, *this); + return new FSConnection(call, *this, (switch_caller_profile_t *)userData); } /////////////////////////////////////////////////////////////////////// -FSConnection::FSConnection(OpalCall & call, FSEndPoint & endpoint) +FSConnection::FSConnection(OpalCall & call, FSEndPoint & endpoint, switch_caller_profile_t *outbound_profile) : OpalLocalConnection(call, endpoint, NULL) , m_endpoint(endpoint) { @@ -502,6 +489,21 @@ FSConnection::FSConnection(OpalCall & call, FSEndPoint & endpoint) tech_pvt = (opal_private_t *) switch_core_session_alloc(m_fsSession, sizeof(*tech_pvt)); tech_pvt->me = this; switch_core_session_set_private(m_fsSession, tech_pvt); + + if (outbound_profile != NULL) { + SetLocalPartyName(outbound_profile->caller_id_number); + SetDisplayName(outbound_profile->caller_id_name); + + switch_caller_profile_t *caller_profile = switch_caller_profile_clone(m_fsSession, outbound_profile); + switch_channel_set_caller_profile(m_fsChannel, caller_profile); + + PString name = "opal/"; + name += outbound_profile->destination_number; + switch_channel_set_name(m_fsChannel, name); + + switch_channel_set_flag(m_fsChannel, CF_OUTBOUND); + switch_channel_set_state(m_fsChannel, CS_INIT); + } } diff --git a/src/mod/endpoints/mod_opal/mod_opal.h b/src/mod/endpoints/mod_opal/mod_opal.h index 24d7367d82..badf2d6a5e 100644 --- a/src/mod/endpoints/mod_opal/mod_opal.h +++ b/src/mod/endpoints/mod_opal/mod_opal.h @@ -26,20 +26,20 @@ #ifndef __FREESWITCH_MOD_OPAL__ #define __FREESWITCH_MOD_OPAL__ -#define HAVE_APR -#include -#include -#define MODNAME "mod_opal" - -#undef strcasecmp -#undef strncasecmp - #include #include #include #include #include +#undef strcasecmp +#undef strncasecmp + +#define HAVE_APR +#include +#include +#define MODNAME "mod_opal" + class FSEndPoint; class FSManager; @@ -154,7 +154,7 @@ class FSConnection:public OpalLocalConnection { PCLASSINFO(FSConnection, OpalLocalConnection) public: - FSConnection(OpalCall & call, FSEndPoint & endpoint); + FSConnection(OpalCall & call, FSEndPoint & endpoint, switch_caller_profile_t *outbound_profile); virtual bool OnIncoming(); virtual void OnReleased();