if (new_buffer) {
memset(new_buffer, 0, sizeof(*new_buffer));
- if (start_len) {
- new_buffer->data = malloc(start_len);
- if (!new_buffer->data) {
- free(new_buffer);
- return ESL_FAIL;
- }
- memset(new_buffer->data, 0, start_len);
+ if (!start_len) {
+ start_len = 250;
+ }
+
+ if (!block_size) {
+ block_size = start_len;
+ }
+
+ new_buffer->data = malloc(start_len);
+ if (!new_buffer->data) {
+ free(new_buffer);
+ return ESL_FAIL;
}
+ memset(new_buffer->data, 0, start_len);
new_buffer->max_len = max_len;
new_buffer->datalen = start_len;
if (new_buffer) {
memset(new_buffer, 0, sizeof(*new_buffer));
- if (start_len) {
- new_buffer->data = ftdm_malloc(start_len);
- if (!new_buffer->data) {
- ftdm_safe_free(new_buffer);
- return FTDM_MEMERR;
- }
- memset(new_buffer->data, 0, start_len);
+ if (!start_len) {
+ start_len = 250;
}
+ if (!block_size) {
+ block_size = start_len;
+ }
+
+ new_buffer->data = ftdm_malloc(start_len);
+ if (!new_buffer->data) {
+ ftdm_safe_free(new_buffer);
+ return FTDM_MEMERR;
+ }
+ memset(new_buffer->data, 0, start_len);
+
new_buffer->max_len = max_len;
new_buffer->datalen = start_len;
new_buffer->id = buffer_id++;
if ((new_buffer = malloc(sizeof(*new_buffer)))) {
memset(new_buffer, 0, sizeof(*new_buffer));
- if (start_len) {
- if (!(new_buffer->data = malloc(start_len))) {
- free(new_buffer);
- *buffer = NULL;
- return SWITCH_STATUS_MEMERR;
- }
- memset(new_buffer->data, 0, start_len);
+ if (!start_len) {
+ start_len = 250;
+ }
+
+ if (!block_size) {
+ block_size = start_len;
}
+
+ if (!(new_buffer->data = malloc(start_len))) {
+ free(new_buffer);
+ *buffer = NULL;
+ return SWITCH_STATUS_MEMERR;
+ }
+
+ memset(new_buffer->data, 0, start_len);
new_buffer->max_len = max_len;
new_buffer->datalen = start_len;
if (!switch_channel_media_ready(session->channel)) {
- if (switch_channel_pre_answer(session->channel) != SWITCH_STATUS_SUCCESS) {
+ if (switch_channel_direction(session->channel == SWITCH_CALL_DIRECTION_OUTBOUND) ||
+ switch_channel_pre_answer(session->channel) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot establish media. Media bug add failed.\n");
return SWITCH_STATUS_FALSE;
}
}
}
bug->stop_time = stop_time;
- bytes = bug->read_impl.decoded_bytes_per_packet;
+ if (!(bytes = bug->read_impl.decoded_bytes_per_packet)) {
+ bytes = 320;
+ }
+
if (!bug->flags) {
bug->flags = (SMBF_READ_STREAM | SMBF_WRITE_STREAM);
}
switch_media_bug_t *new_bug = NULL, *cur = NULL, *bp = NULL, *last = NULL;
int total = 0;
+ if (!switch_channel_media_ready(new_session->channel)) {
+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(orig_session), SWITCH_LOG_WARNING, "Cannot transfer media bugs to a channel with no media.\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
switch_thread_rwlock_wrlock(orig_session->bug_rwlock);
bp = orig_session->bugs;
while (bp) {