[Freeswitch-trunk] [commit] r7002 - freeswitch/trunk/src/mod/applications/mod_conference

Freeswitch SVN anthm at freeswitch.org
Fri Dec 28 14:47:51 EST 2007


Author: anthm
Date: Fri Dec 28 14:47:51 2007
New Revision: 7002

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c

Log:
fix MODAPP-59

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Fri Dec 28 14:47:51 2007
@@ -1909,8 +1909,9 @@
 	switch_core_file_set_string(&fh, SWITCH_AUDIO_COL_STR_ARTIST, "FreeSWITCH mod_conference Software Conference Module");
 
 	while (switch_test_flag(member, MFLAG_RUNNING) && switch_test_flag(conference, CFLAG_RUNNING) && conference->count) {
+		switch_size_t len;
 		mux_used = (uint32_t) switch_buffer_inuse(member->mux_buffer);
-
+		
 		if (switch_test_flag(member, MFLAG_FLUSH_BUFFER)) {
 			if (mux_used) {
 				switch_mutex_lock(member->audio_out_mutex);
@@ -1928,18 +1929,26 @@
 
 			if ((rlen = (uint32_t) switch_buffer_read(member->mux_buffer, data, sizeof(data)))) {
 				if (!switch_test_flag((&fh), SWITCH_FILE_PAUSE)) {
-					switch_size_t len = (switch_size_t) rlen / sizeof(int16_t);
-					if (switch_core_file_write(&fh, data, &len) != SWITCH_STATUS_SUCCESS) {
-						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Write Failed\n");
-						switch_clear_flag_locked(member, MFLAG_RUNNING);
-					}
+					len = (switch_size_t) rlen / sizeof(int16_t);
 				}
 			}
 			switch_mutex_unlock(member->audio_out_mutex);
 		} else {
-			switch_core_timer_next(&timer);
+			if (!switch_test_flag((&fh), SWITCH_FILE_PAUSE)) {
+				len = (switch_size_t) samples;
+				memset(data, 0, len);
+			}
 		}
-	}							/* Rinse ... Repeat */
+
+		if (!switch_test_flag((&fh), SWITCH_FILE_PAUSE)) {
+			if (switch_core_file_write(&fh, data, &len) != SWITCH_STATUS_SUCCESS) {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Write Failed\n");
+				switch_clear_flag_locked(member, MFLAG_RUNNING);
+			}
+		}
+
+		switch_core_timer_next(&timer);
+	} /* Rinse ... Repeat */
 
   end:
 



More information about the Freeswitch-trunk mailing list