mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-02 07:02:31 +00:00
FS-4180 --resolve
This commit is contained in:
parent
163fffb3e8
commit
2368f556ac
@ -1354,31 +1354,26 @@ static switch_status_t read_packet(listener_t *listener, switch_event_t **event,
|
|||||||
if (channel && switch_channel_down(channel) && !switch_test_flag(listener, LFLAG_HANDLE_DISCO)) {
|
if (channel && switch_channel_down(channel) && !switch_test_flag(listener, LFLAG_HANDLE_DISCO)) {
|
||||||
switch_set_flag_locked(listener, LFLAG_HANDLE_DISCO);
|
switch_set_flag_locked(listener, LFLAG_HANDLE_DISCO);
|
||||||
if (switch_test_flag(listener, LFLAG_LINGER)) {
|
if (switch_test_flag(listener, LFLAG_LINGER)) {
|
||||||
char message[128] = "";
|
|
||||||
char disco_buf[512] = "";
|
char disco_buf[512] = "";
|
||||||
|
|
||||||
if (listener->linger_timeout != (time_t) -1) {
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "%s Socket Linger %"SWITCH_TIME_T_FMT"\n",
|
||||||
listener->linger_timeout += switch_epoch_time_now(NULL);
|
|
||||||
switch_snprintf(message, sizeof(message),
|
|
||||||
"Channel %s has disconnected, lingering %d seconds by request from remote.\n",
|
|
||||||
switch_channel_get_name(channel), listener->linger_timeout);
|
switch_channel_get_name(channel), listener->linger_timeout);
|
||||||
} else {
|
|
||||||
switch_snprintf(message, sizeof(message),
|
|
||||||
"Channel %s has disconnected, lingering by request from remote.\n",
|
|
||||||
switch_channel_get_name(channel));
|
|
||||||
}
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s", message);
|
|
||||||
|
|
||||||
mlen = strlen(message);
|
|
||||||
|
|
||||||
switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n"
|
switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n"
|
||||||
"Controlled-Session-UUID: %s\n"
|
"Controlled-Session-UUID: %s\n"
|
||||||
"Content-Disposition: linger\n" "Content-Length: %d\n\n", switch_core_session_get_uuid(listener->session), (int) mlen);
|
"Content-Disposition: linger\n"
|
||||||
|
"Channel-Name: %s\n"
|
||||||
|
"Linger-Time: %"SWITCH_TIME_T_FMT"\n"
|
||||||
|
"Content-Length: 0\n\n",
|
||||||
|
switch_core_session_get_uuid(listener->session), switch_channel_get_name(channel), listener->linger_timeout);
|
||||||
|
|
||||||
|
|
||||||
|
if (listener->linger_timeout != (time_t) -1) {
|
||||||
|
listener->linger_timeout += switch_epoch_time_now(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
len = strlen(disco_buf);
|
len = strlen(disco_buf);
|
||||||
switch_socket_send(listener->sock, disco_buf, &len);
|
switch_socket_send(listener->sock, disco_buf, &len);
|
||||||
len = mlen;
|
|
||||||
switch_socket_send(listener->sock, message, &len);
|
|
||||||
} else {
|
} else {
|
||||||
status = SWITCH_STATUS_FALSE;
|
status = SWITCH_STATUS_FALSE;
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user