]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4180 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 3 May 2012 19:23:09 +0000 (14:23 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 3 May 2012 19:23:09 +0000 (14:23 -0500)
src/mod/event_handlers/mod_event_socket/mod_event_socket.c

index 518583a25da1151bea9b186287696fef40ff6369..a965780f8d375871f5ac7c97ea39d8e05594de7f 100644 (file)
@@ -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;