add case for kill sigs
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3778 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
6f3f463f0b
commit
90440eaf1d
|
@ -1131,28 +1131,41 @@ static switch_status_t channel_kill_channel(switch_core_session_t *session, int
|
||||||
switch_channel_t *channel = NULL;
|
switch_channel_t *channel = NULL;
|
||||||
struct private_object *tech_pvt = NULL;
|
struct private_object *tech_pvt = NULL;
|
||||||
|
|
||||||
if ((channel = switch_core_session_get_channel(session))) {
|
if (!(channel = switch_core_session_get_channel(session))) {
|
||||||
if ((tech_pvt = switch_core_session_get_private(session))) {
|
return SWITCH_STATUS_SUCCESS;
|
||||||
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 (!(tech_pvt = switch_core_session_get_private(session))) {
|
||||||
if (!switch_test_flag(tech_pvt, TFLAG_TERM)) {
|
return SWITCH_STATUS_SUCCESS;
|
||||||
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 (sig) {
|
||||||
switch_rtp_kill_socket(tech_pvt->rtp_session);
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -566,11 +566,16 @@ static switch_status_t channel_kill_channel(switch_core_session_t *session, int
|
||||||
tech_pvt = switch_core_session_get_private(session);
|
tech_pvt = switch_core_session_get_private(session);
|
||||||
assert(tech_pvt != NULL);
|
assert(tech_pvt != NULL);
|
||||||
|
|
||||||
switch_clear_flag_locked(tech_pvt, TFLAG_IO);
|
switch(sig) {
|
||||||
switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
|
case SWITCH_SIG_KILL:
|
||||||
switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
|
switch_clear_flag_locked(tech_pvt, TFLAG_IO);
|
||||||
//switch_thread_cond_signal(tech_pvt->cond);
|
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));
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -273,10 +273,15 @@ static switch_status_t channel_kill_channel(switch_core_session_t *session, int
|
||||||
tech_pvt = switch_core_session_get_private(session);
|
tech_pvt = switch_core_session_get_private(session);
|
||||||
assert(tech_pvt != NULL);
|
assert(tech_pvt != NULL);
|
||||||
|
|
||||||
switch_clear_flag_locked(tech_pvt, TFLAG_IO);
|
switch (sig) {
|
||||||
deactivate_audio_device(tech_pvt);
|
case SWITCH_SIG_KILL:
|
||||||
switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
|
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));
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -755,11 +755,16 @@ static switch_status_t wanpipe_kill_channel(switch_core_session_t *session, int
|
||||||
tech_pvt = switch_core_session_get_private(session);
|
tech_pvt = switch_core_session_get_private(session);
|
||||||
assert(tech_pvt != NULL);
|
assert(tech_pvt != NULL);
|
||||||
|
|
||||||
switch_mutex_lock(tech_pvt->flag_mutex);
|
switch(sig) {
|
||||||
switch_set_flag(tech_pvt, TFLAG_BYE);
|
case SWITCH_SIG_KILL:
|
||||||
switch_clear_flag(tech_pvt, TFLAG_MEDIA);
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_mutex_unlock(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);
|
//sangoma_socket_close(&tech_pvt->wpsock->fd);
|
||||||
//wp_close(tech_pvt);
|
//wp_close(tech_pvt);
|
||||||
|
|
||||||
|
|
|
@ -327,11 +327,19 @@ static switch_status_t woomerachan_kill_channel(switch_core_session_t *session,
|
||||||
return SWITCH_STATUS_FALSE;
|
return SWITCH_STATUS_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
udp_socket_close(tech_pvt);
|
switch(sig) {
|
||||||
|
case SWITCH_SIG_KILL:
|
||||||
switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
|
udp_socket_close(tech_pvt);
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s WOOMERACHAN KILL\n", switch_channel_get_name(channel));
|
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;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
|
Loading…
Reference in New Issue