static void mrcp_sofia_on_session_terminate( 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[]) { mrcp_session_t *session = sofia_session->session; if(session) { apt_bool_t terminate_requested; apr_thread_mutex_lock(sofia_session->mutex); terminate_requested = sofia_session->terminate_requested; session = sofia_session->session; mrcp_sofia_session_unref(sofia_session); apr_thread_mutex_unlock(sofia_session->mutex); if(terminate_requested == TRUE) { mrcp_sofia_session_destroy(sofia_session); mrcp_session_terminate_response(session); } else { mrcp_session_terminate_event(session); } } }
static void mrcp_sofia_on_session_terminate( 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[]) { mrcp_session_t *session; apt_bool_t terminate_requested; apr_thread_mutex_lock(sofia_session->mutex); terminate_requested = sofia_session->terminate_requested; session = sofia_session->session; mrcp_sofia_session_unref(sofia_session); apr_thread_mutex_unlock(sofia_session->mutex); if(terminate_requested == TRUE) { mrcp_sofia_session_cleanup(sofia_session); mrcp_session_terminate_response(session); return; } if(sofia_session->nua_state == nua_callstate_ready) { mrcp_session_terminate_event(session); } else { mrcp_session_descriptor_t *descriptor = mrcp_session_descriptor_create(session->pool); descriptor->response_code = status; mrcp_session_answer(session,descriptor); } }
static void mrcp_sofia_on_session_terminate( 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[]) { if(sofia_session->terminate_requested == TRUE) { mrcp_session_terminate_response(sofia_session->session); mrcp_sofia_session_destroy(sofia_session); } else { mrcp_session_terminate_event(sofia_session->session); } }
static apt_bool_t mrcp_unirtsp_on_session_terminate_event(rtsp_client_t *rtsp_client, rtsp_client_session_t *rtsp_session) { mrcp_unirtsp_session_t *session = rtsp_client_session_object_get(rtsp_session); mrcp_session_terminate_event(session->mrcp_session); return TRUE; }