switch_channel_t *channel = NULL;
struct private_object *tech_pvt = NULL;
- if ((channel = switch_core_session_get_channel(session))) {
- if ((tech_pvt = switch_core_session_get_private(session))) {
- switch_clear_flag_locked(tech_pvt, TFLAG_IO);
- switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
- switch_set_flag_locked(tech_pvt, TFLAG_BYE);
+ if (!(channel = switch_core_session_get_channel(session))) {
+ return SWITCH_STATUS_SUCCESS;
+ }
- if (tech_pvt->dlsession) {
- if (!switch_test_flag(tech_pvt, TFLAG_TERM)) {
- ldl_session_terminate(tech_pvt->dlsession);
- switch_set_flag_locked(tech_pvt, TFLAG_TERM);
- }
- ldl_session_destroy(&tech_pvt->dlsession);
+ if (!(tech_pvt = switch_core_session_get_private(session))) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+
+ switch (sig) {
+ case SWITCH_SIG_KILL:
+ switch_clear_flag_locked(tech_pvt, TFLAG_IO);
+ switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
+ switch_set_flag_locked(tech_pvt, TFLAG_BYE);
+
+ if (tech_pvt->dlsession) {
+ if (!switch_test_flag(tech_pvt, TFLAG_TERM)) {
+ ldl_session_terminate(tech_pvt->dlsession);
+ switch_set_flag_locked(tech_pvt, TFLAG_TERM);
+ }
+ ldl_session_destroy(&tech_pvt->dlsession);
+
+ }
- }
+ if (switch_rtp_ready(tech_pvt->rtp_session)) {
+ switch_rtp_kill_socket(tech_pvt->rtp_session);
+ }
+ break;
+ case SWITCH_SIG_BREAK:
+ switch_rtp_set_flag(tech_pvt->rtp_session, SWITCH_RTP_FLAG_BREAK);
+ break;
+ }
- if (switch_rtp_ready(tech_pvt->rtp_session)) {
- switch_rtp_kill_socket(tech_pvt->rtp_session);
- }
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
- }
- }
return SWITCH_STATUS_SUCCESS;
}
tech_pvt = switch_core_session_get_private(session);
assert(tech_pvt != NULL);
- switch_clear_flag_locked(tech_pvt, TFLAG_IO);
- switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
- switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
- //switch_thread_cond_signal(tech_pvt->cond);
-
+ switch(sig) {
+ case SWITCH_SIG_KILL:
+ switch_clear_flag_locked(tech_pvt, TFLAG_IO);
+ switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
+ switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
+ //switch_thread_cond_signal(tech_pvt->cond);
+ break;
+ default:
+ break;
+ }
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
tech_pvt = switch_core_session_get_private(session);
assert(tech_pvt != NULL);
- switch_clear_flag_locked(tech_pvt, TFLAG_IO);
- deactivate_audio_device(tech_pvt);
- switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
-
+ switch (sig) {
+ case SWITCH_SIG_KILL:
+ switch_clear_flag_locked(tech_pvt, TFLAG_IO);
+ deactivate_audio_device(tech_pvt);
+ switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
+ break;
+ default:
+ break;
+ }
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
tech_pvt = switch_core_session_get_private(session);
assert(tech_pvt != NULL);
- switch_mutex_lock(tech_pvt->flag_mutex);
- switch_set_flag(tech_pvt, TFLAG_BYE);
- switch_clear_flag(tech_pvt, TFLAG_MEDIA);
- switch_mutex_unlock(tech_pvt->flag_mutex);
-
+ switch(sig) {
+ case SWITCH_SIG_KILL:
+ switch_mutex_lock(tech_pvt->flag_mutex);
+ switch_set_flag(tech_pvt, TFLAG_BYE);
+ switch_clear_flag(tech_pvt, TFLAG_MEDIA);
+ switch_mutex_unlock(tech_pvt->flag_mutex);
+ break;
+ default:
+ break;
+ }
//sangoma_socket_close(&tech_pvt->wpsock->fd);
//wp_close(tech_pvt);
return SWITCH_STATUS_FALSE;
}
- udp_socket_close(tech_pvt);
-
- switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s WOOMERACHAN KILL\n", switch_channel_get_name(channel));
-
+ switch(sig) {
+ case SWITCH_SIG_KILL:
+ udp_socket_close(tech_pvt);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s WOOMERACHAN KILL\n", switch_channel_get_name(channel));
+ break;
+ case SWITCH_SIG_BREAK:
+ {
+ int p = 0;
+ switch_size_t len = sizeof(p);
+ switch_socket_sendto(tech_pvt->udp_socket, tech_pvt->udpwrite, 0, &p, &len);
+ }
+ break;
+ }
return SWITCH_STATUS_SUCCESS;