static void mrcp_sofia_on_state_change( int status, mrcp_sofia_agent_t *sofia_agent, nua_handle_t *nh, mrcp_sofia_session_t *sofia_session, sip_t const *sip, tagi_t tags[]) { int ss_state = nua_callstate_init; tl_gets(tags, NUTAG_CALLSTATE_REF(ss_state), TAG_END()); apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"SIP Call State %s [%s]", sofia_session ? sofia_session->session->name : "", nua_callstate_name(ss_state)); switch(ss_state) { case nua_callstate_ready: mrcp_sofia_on_session_ready(status,sofia_agent,nh,sofia_session,sip,tags); break; case nua_callstate_terminated: mrcp_sofia_on_session_terminate(status,sofia_agent,nh,sofia_session,sip,tags); break; } }
static void mrcp_sofia_on_state_change( int status, mrcp_sofia_agent_t *sofia_agent, nua_handle_t *nh, mrcp_sofia_session_t *sofia_session, sip_t const *sip, tagi_t tags[]) { int nua_state = nua_callstate_init; tl_gets(tags, NUTAG_CALLSTATE_REF(nua_state), TAG_END()); if(!sofia_session || !sofia_session->session) { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"SIP Call State [%s]", nua_callstate_name(nua_state)); return; } apt_obj_log(APT_LOG_MARK,APT_PRIO_NOTICE,sofia_session->session->log_obj,"SIP Call State %s [%s]", sofia_session->session->name, nua_callstate_name(nua_state)); switch(nua_state) { case nua_callstate_ready: mrcp_sofia_on_session_ready(status,sofia_agent,nh,sofia_session,sip,tags); break; case nua_callstate_terminated: mrcp_sofia_on_session_terminate(status,sofia_agent,nh,sofia_session,sip,tags); break; } sofia_session->nua_state = nua_state; }