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);
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);
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;
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:
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;
switch_thread_rwlock_t *terminations_rwlock;
};
+
+
static inline const char *megaco_codec_str(megaco_codec_t codec)
{
switch (codec) {