Revision
16917
Author
anthm
Date
2010-03-05 12:58:08 -0600 (Fri, 05 Mar 2010)

Log Message

FSMOD-39

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_ivr_play_say.c (16916 => 16917)


--- freeswitch/trunk/src/switch_ivr_play_say.c	2010-03-05 16:56:28 UTC (rev 16916)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	2010-03-05 18:58:08 UTC (rev 16917)
@@ -2126,13 +2126,10 @@
 
 	if (need_create) {
 		memset(sh, 0, sizeof(*sh));
-		if ((status = switch_core_speech_open(sh, tts_name, voice_name, (uint32_t) rate, interval,
-											  &flags, switch_core_session_get_pool(session))) != SWITCH_STATUS_SUCCESS) {
+		if ((status = switch_core_speech_open(sh, tts_name, voice_name, (uint32_t) rate, interval, &flags, NULL)) != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid TTS module!\n");
 			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
-			if (cache_obj) {
-				switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
-			}
+			switch_ivr_clear_speech_cache(session);
 			return status;
 		}
 	} else if (cache_obj && strcasecmp(cache_obj->voice_name, voice_name)) {
@@ -2141,6 +2138,8 @@
 	}
 
 	if (switch_channel_pre_answer(channel) != SWITCH_STATUS_SUCCESS) {
+		flags = 0;
+		switch_core_speech_close(sh, &flags);
 		return SWITCH_STATUS_FALSE;
 	}
 	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "OPEN TTS %s\n", tts_name);
@@ -2159,9 +2158,7 @@
 			flags = 0;
 			switch_core_speech_close(sh, &flags);
 			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
-			if (cache_obj) {
-				switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
-			}
+			switch_ivr_clear_speech_cache(session);
 			return SWITCH_STATUS_GENERR;
 		}
 	}
@@ -2176,9 +2173,7 @@
 				flags = 0;
 				switch_core_speech_close(sh, &flags);
 				switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
-				if (cache_obj) {
-					switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
-				}
+				switch_ivr_clear_speech_cache(session);
 				return SWITCH_STATUS_GENERR;
 			}
 			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Setup timer success %u bytes per %d ms!\n", sh->samples * 2,