提交 b6bd8071 authored 作者: Kapil Gupta's avatar Kapil Gupta

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

上级 917609df
...@@ -637,6 +637,7 @@ switch_status_t megaco_profile_start(const char *profilename) ...@@ -637,6 +637,7 @@ switch_status_t megaco_profile_start(const char *profilename)
profile->name = switch_core_strdup(pool, profilename); profile->name = switch_core_strdup(pool, profilename);
profile->next_context_id++; profile->next_context_id++;
profile->inact_tmr = 0x00; profile->inact_tmr = 0x00;
profile->peer_active = 0x00;
profile->inact_tmr_task_id = 0x00; profile->inact_tmr_task_id = 0x00;
switch_thread_rwlock_create(&profile->rwlock, pool); switch_thread_rwlock_create(&profile->rwlock, pool);
...@@ -708,6 +709,8 @@ switch_status_t mgco_init_ins_service_change(SuId suId) ...@@ -708,6 +709,8 @@ switch_status_t mgco_init_ins_service_change(SuId suId)
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
profile->peer_active = 0x01;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
"mgco_init_ins_service_change : Initiating terminations service change for profile: %s\n", profile->name); "mgco_init_ins_service_change : Initiating terminations service change for profile: %s\n", profile->name);
......
...@@ -2479,6 +2479,14 @@ U32 get_txn_id(){ ...@@ -2479,6 +2479,14 @@ U32 get_txn_id(){
return outgoing_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) 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; mg_termination_t* term = NULL;
...@@ -2493,6 +2501,12 @@ switch_status_t mg_send_term_service_change(char *span_name, char *chan_number, ...@@ -2493,6 +2501,12 @@ switch_status_t mg_send_term_service_change(char *span_name, char *chan_number,
return SWITCH_STATUS_FALSE; 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) switch(term_state)
{ {
case MG_TERM_SERVICE_STATE_IN_SERVICE: case MG_TERM_SERVICE_STATE_IN_SERVICE:
......
...@@ -205,6 +205,7 @@ struct megaco_profile_s { ...@@ -205,6 +205,7 @@ struct megaco_profile_s {
char* peer_list[MG_MAX_PEERS]; /* MGC Peer ID LIST */ char* peer_list[MG_MAX_PEERS]; /* MGC Peer ID LIST */
char* codec_prefs; char* codec_prefs;
int inact_tmr; /* inactivity timer value */ int inact_tmr; /* inactivity timer value */
int peer_active; /* inactivity timer value */
uint32_t inact_tmr_task_id; /* FS timer scheduler task-id */ uint32_t inact_tmr_task_id; /* FS timer scheduler task-id */
switch_thread_rwlock_t *contexts_rwlock; switch_thread_rwlock_t *contexts_rwlock;
...@@ -221,6 +222,8 @@ struct megaco_profile_s { ...@@ -221,6 +222,8 @@ struct megaco_profile_s {
switch_thread_rwlock_t *terminations_rwlock; switch_thread_rwlock_t *terminations_rwlock;
}; };
static inline const char *megaco_codec_str(megaco_codec_t codec) static inline const char *megaco_codec_str(megaco_codec_t codec)
{ {
switch (codec) { switch (codec) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论