[Freeswitch-trunk] [commit] r12728 - in freeswitch/trunk/src: . mod/formats/mod_sndfile mod/languages/mod_lua

FreeSWITCH SVN anthm at freeswitch.org
Tue Mar 24 07:54:13 PDT 2009


Author: anthm
Date: Tue Mar 24 09:54:13 2009
New Revision: 12728

Log:
FSCORE-341

Modified:
   freeswitch/trunk/src/mod/formats/mod_sndfile/mod_sndfile.c
   freeswitch/trunk/src/mod/languages/mod_lua/freeswitch_lua.cpp
   freeswitch/trunk/src/switch_core_file.c
   freeswitch/trunk/src/switch_cpp.cpp

Modified: freeswitch/trunk/src/mod/formats/mod_sndfile/mod_sndfile.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_sndfile/mod_sndfile.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_sndfile/mod_sndfile.c	Tue Mar 24 09:54:13 2009
@@ -103,7 +103,8 @@
 		context->sfinfo.channels = handle->channels;
 		context->sfinfo.samplerate = handle->samplerate;
 		if (handle->samplerate == 8000 || handle->samplerate == 16000 ||
-			handle->samplerate == 24000 || handle->samplerate == 32000 || handle->samplerate == 48000) {
+			handle->samplerate == 24000 || handle->samplerate == 32000 || handle->samplerate == 48000 ||
+			handle->samplerate == 11025 || handle->samplerate == 22050 || handle->samplerate == 44100) {
 			context->sfinfo.format |= SF_FORMAT_PCM_16;
 		}
 

Modified: freeswitch/trunk/src/mod/languages/mod_lua/freeswitch_lua.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_lua/freeswitch_lua.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_lua/freeswitch_lua.cpp	Tue Mar 24 09:54:13 2009
@@ -24,20 +24,23 @@
 Session::~Session()
 {
 
-	if (channel) {
-		switch_channel_set_private(channel, "CoreSession", NULL);
-	}
-
-	if (hangup_func_str) {
-		if (session) {
-			switch_core_event_hook_remove_state_change(session, lua_hanguphook);
+	if (session) {
+		if (!channel) {
+			channel = switch_core_session_get_channel(session);
 		}
-		switch_safe_free(hangup_func_str);
+		switch_channel_set_private(channel, "CoreSession", NULL);
+		switch_core_event_hook_remove_state_change(session, lua_hanguphook);
+		session = NULL;
+		channel = NULL;
 	}
 
+	switch_safe_free(hangup_func_str);
 	switch_safe_free(hangup_func_arg);
 	switch_safe_free(cb_function);
 	switch_safe_free(cb_arg);
+
+	init_vars();
+	
 }
 
 bool Session::begin_allow_threads()

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Tue Mar 24 09:54:13 2009
@@ -290,10 +290,10 @@
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);
-			memcpy(fh->dbuf, fh->resampler->to, fh->resampler->to_len);
+			memcpy(fh->dbuf, fh->resampler->to, fh->resampler->to_len * 2);
 			data = fh->dbuf;
 		} else {
-			memcpy(data, fh->resampler->to, fh->resampler->to_len);
+			memcpy(data, fh->resampler->to, fh->resampler->to_len * 2);
 		}
 
 		*len = fh->resampler->to_len / fh->channels;

Modified: freeswitch/trunk/src/switch_cpp.cpp
==============================================================================
--- freeswitch/trunk/src/switch_cpp.cpp	(original)
+++ freeswitch/trunk/src/switch_cpp.cpp	Tue Mar 24 09:54:13 2009
@@ -888,22 +888,28 @@
 {
 	this_check_void();
 
-	if (channel) {
-		switch_channel_set_private(channel, "CoreSession", NULL);
-	}
-	
 	switch_safe_free(xml_cdr_text);
 	switch_safe_free(uuid);	
 	switch_safe_free(tts_name);
 	switch_safe_free(voice_name);
 
 	if (session) {
+		if (!channel) {
+			channel = switch_core_session_get_channel(session);
+		}
+
+		if (channel) {
+			switch_channel_set_private(channel, "CoreSession", NULL);
+		}
+		
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "destroy/unlink session from object\n");
-        if (switch_test_flag(this, S_HUP) && !switch_channel_test_flag(channel, CF_TRANSFER)) {
+
+        if (switch_channel_up(channel) && switch_test_flag(this, S_HUP) && !switch_channel_test_flag(channel, CF_TRANSFER)) {
             switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
         }
         switch_core_session_rwunlock(session);
 		session = NULL;
+		channel = NULL;
     }
 
 	allocated = 0;



More information about the Freeswitch-trunk mailing list