BOUNTY-19

This commit is contained in:
Anthony Minessale 2010-06-04 19:37:04 -05:00
parent 0f133eae2d
commit 0152706fa9
2 changed files with 16 additions and 9 deletions

View File

@ -3546,6 +3546,7 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
char *host = NULL, *dest_to = NULL; char *host = NULL, *dest_to = NULL;
const char *hval = NULL; const char *hval = NULL;
char *not_const = NULL; char *not_const = NULL;
int cid_locked = 0;
*new_session = NULL; *new_session = NULL;
@ -3614,7 +3615,8 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
} }
tech_pvt->transport = gateway_ptr->register_transport; tech_pvt->transport = gateway_ptr->register_transport;
tech_pvt->cid_type = gateway_ptr->cid_type;
cid_locked = 1;
/* /*
* Handle params, strip them off the destination and add them to the * Handle params, strip them off the destination and add them to the
@ -3852,7 +3854,9 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
switch_ivr_transfer_variable(session, nsession, "sip_video_fmtp"); switch_ivr_transfer_variable(session, nsession, "sip_video_fmtp");
switch_ivr_transfer_variable(session, nsession, "sip-force-contact"); switch_ivr_transfer_variable(session, nsession, "sip-force-contact");
switch_ivr_transfer_variable(session, nsession, "sip_sticky_contact"); switch_ivr_transfer_variable(session, nsession, "sip_sticky_contact");
switch_ivr_transfer_variable(session, nsession, "sip_cid_type"); if (!cid_locked) {
switch_ivr_transfer_variable(session, nsession, "sip_cid_type");
}
if (switch_core_session_compare(session, nsession)) { 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 /* It's another sofia channel! so lets cache what they use as a pt for telephone event so
@ -3863,7 +3867,9 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
switch_assert(ctech_pvt != NULL); switch_assert(ctech_pvt != NULL);
tech_pvt->bte = ctech_pvt->te; tech_pvt->bte = ctech_pvt->te;
tech_pvt->bcng_pt = ctech_pvt->cng_pt; tech_pvt->bcng_pt = ctech_pvt->cng_pt;
tech_pvt->cid_type = ctech_pvt->cid_type; if (!cid_locked) {
tech_pvt->cid_type = ctech_pvt->cid_type;
}
if (sofia_test_flag(tech_pvt, TFLAG_ENABLE_SOA)) { if (sofia_test_flag(tech_pvt, TFLAG_ENABLE_SOA)) {
sofia_set_flag(ctech_pvt, TFLAG_ENABLE_SOA); sofia_set_flag(ctech_pvt, TFLAG_ENABLE_SOA);

View File

@ -313,6 +313,12 @@ typedef enum {
REG_FLAG_MAX REG_FLAG_MAX
} reg_flags_t; } reg_flags_t;
typedef enum {
CID_TYPE_RPID,
CID_TYPE_PID,
CID_TYPE_NONE
} sofia_cid_type_t;
typedef enum { typedef enum {
REG_STATE_UNREGED, REG_STATE_UNREGED,
REG_STATE_TRYING, REG_STATE_TRYING,
@ -416,6 +422,7 @@ struct sofia_gateway {
struct sofia_gateway *next; struct sofia_gateway *next;
sofia_gateway_subscription_t *subscriptions; sofia_gateway_subscription_t *subscriptions;
int distinct_to; int distinct_to;
sofia_cid_type_t cid_type;
}; };
typedef enum { typedef enum {
@ -430,12 +437,6 @@ typedef enum {
MEDIA_OPT_BYPASS_AFTER_ATT_XFER = (1 << 1) MEDIA_OPT_BYPASS_AFTER_ATT_XFER = (1 << 1)
} sofia_media_options_t; } sofia_media_options_t;
typedef enum {
CID_TYPE_RPID,
CID_TYPE_PID,
CID_TYPE_NONE
} sofia_cid_type_t;
struct sofia_profile { struct sofia_profile {
int debug; int debug;
char *name; char *name;