adding "peer_active" flag to check before send any message to megaco stack

This commit is contained in:
Kapil Gupta 2012-08-23 18:15:07 -04:00
parent 917609df1b
commit b6bd807186
3 changed files with 20 additions and 0 deletions

View File

@ -637,6 +637,7 @@ switch_status_t megaco_profile_start(const char *profilename)
profile->name = switch_core_strdup(pool, profilename);
profile->next_context_id++;
profile->inact_tmr = 0x00;
profile->peer_active = 0x00;
profile->inact_tmr_task_id = 0x00;
switch_thread_rwlock_create(&profile->rwlock, pool);
@ -708,6 +709,8 @@ switch_status_t mgco_init_ins_service_change(SuId suId)
return SWITCH_STATUS_FALSE;
}
profile->peer_active = 0x01;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
"mgco_init_ins_service_change : Initiating terminations service change for profile: %s\n", profile->name);

View File

@ -2479,6 +2479,14 @@ U32 get_txn_id(){
return outgoing_txn_id;
}
/*****************************************************************************************************************************/
switch_status_t mg_is_peer_active(megaco_profile_t* profile)
{
if((profile) && (0x01 == profile->peer_active)){
return SWITCH_STATUS_SUCCESS;
}
return SWITCH_STATUS_FALSE;
}
/*****************************************************************************************************************************/
switch_status_t mg_send_term_service_change(char *span_name, char *chan_number, mg_term_states_e term_state)
{
mg_termination_t* term = NULL;
@ -2493,6 +2501,12 @@ switch_status_t mg_send_term_service_change(char *span_name, char *chan_number,
return SWITCH_STATUS_FALSE;
}
if(SWITCH_STATUS_FALSE == mg_is_peer_active(term->profile))
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "profile: %s peer not yet enabled..\n", term->profile->name);
return SWITCH_STATUS_FALSE;
}
switch(term_state)
{
case MG_TERM_SERVICE_STATE_IN_SERVICE:

View File

@ -205,6 +205,7 @@ struct megaco_profile_s {
char* peer_list[MG_MAX_PEERS]; /* MGC Peer ID LIST */
char* codec_prefs;
int inact_tmr; /* inactivity timer value */
int peer_active; /* inactivity timer value */
uint32_t inact_tmr_task_id; /* FS timer scheduler task-id */
switch_thread_rwlock_t *contexts_rwlock;
@ -221,6 +222,8 @@ struct megaco_profile_s {
switch_thread_rwlock_t *terminations_rwlock;
};
static inline const char *megaco_codec_str(megaco_codec_t codec)
{
switch (codec) {