Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (16680 => 16681)
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c 2010-02-17 20:22:33 UTC (rev 16680)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c 2010-02-17 21:57:45 UTC (rev 16681)
@@ -1046,7 +1046,7 @@
}
/* Start recording if there's more than one participant. */
- if (ready > 1 && conference->auto_record && !conference->is_recording) {
+ if (conference->auto_record && !conference->is_recording && conference->count > 1) {
conference->is_recording = 1;
imember = conference->members;
if (imember) {
Modified: freeswitch/trunk/src/switch_core_io.c (16680 => 16681)
--- freeswitch/trunk/src/switch_core_io.c 2010-02-17 20:22:33 UTC (rev 16680)
+++ freeswitch/trunk/src/switch_core_io.c 2010-02-17 21:57:45 UTC (rev 16681)
@@ -105,11 +105,16 @@
switch_io_event_hook_read_frame_t *ptr;
switch_status_t status = SWITCH_STATUS_FALSE;
int need_codec, perfect, do_bugs = 0, do_resample = 0, is_cng = 0;
- unsigned int flag = 0;
+ unsigned int flag = 0, sanity = 5000;
switch_codec_implementation_t codec_impl;
-
+
switch_assert(session != NULL);
+ while(!switch_channel_media_ack(session->channel) || !switch_channel_test_flag(session->channel, CF_MEDIA_SET)) {
+ if (!--sanity) break;
+ switch_cond_next();
+ }
+
if (!(session->read_codec && session->read_codec->implementation && switch_core_codec_ready(session->read_codec))) {
if (switch_channel_test_flag(session->channel, CF_PROXY_MODE) || switch_channel_get_state(session->channel) == CS_HIBERNATE) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "%s reading on a session with no media!\n",
@@ -567,6 +572,7 @@
switch_status_t status = SWITCH_STATUS_FALSE;
switch_frame_t *enc_frame = NULL, *write_frame = frame;
unsigned int flag = 0, need_codec = 0, perfect = 0, do_bugs = 0, do_write = 0, do_resample = 0, ptime_mismatch = 0, pass_cng = 0, resample = 0;
+ unsigned int sanity = 5000;
int did_write_resample = 0;
switch_assert(session != NULL);
@@ -583,6 +589,12 @@
return SWITCH_STATUS_SUCCESS;
}
+
+ while(!switch_channel_media_ack(session->channel) || !switch_channel_test_flag(session->channel, CF_MEDIA_SET)) {
+ if (!--sanity) break;
+ switch_cond_next();
+ }
+
if (!(session->write_codec && switch_core_codec_ready(session->write_codec)) && !pass_cng) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "%s has no write codec.\n", switch_channel_get_name(session->channel));
return SWITCH_STATUS_FALSE;