From 2368f556ac556d07f1b1fe59c726a664780c0847 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 3 May 2012 14:23:09 -0500 Subject: [PATCH] FS-4180 --resolve --- .../mod_event_socket/mod_event_socket.c | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index 518583a25d..a965780f8d 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -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)) { switch_set_flag_locked(listener, LFLAG_HANDLE_DISCO); if (switch_test_flag(listener, LFLAG_LINGER)) { - char message[128] = ""; char disco_buf[512] = ""; + + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "%s Socket Linger %"SWITCH_TIME_T_FMT"\n", + switch_channel_get_name(channel), listener->linger_timeout); + + switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n" + "Controlled-Session-UUID: %s\n" + "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); - 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); - } 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" - "Controlled-Session-UUID: %s\n" - "Content-Disposition: linger\n" "Content-Length: %d\n\n", switch_core_session_get_uuid(listener->session), (int) mlen); - + len = strlen(disco_buf); switch_socket_send(listener->sock, disco_buf, &len); - len = mlen; - switch_socket_send(listener->sock, message, &len); } else { status = SWITCH_STATUS_FALSE; break;