aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/app_dial.c11
-rw-r--r--main/channel.c6
2 files changed, 13 insertions, 4 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 0424ec0d8..e05a88713 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -839,7 +839,16 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
/* Turn off hold music, etc */
ast_deactivate_generator(in);
/* If we are calling a single channel, make them compatible for in-band tone purpose */
- ast_channel_make_compatible(outgoing->chan, in);
+ if (ast_channel_make_compatible(outgoing->chan, in) < 0) {
+ /* If these channels can not be made compatible,
+ * there is no point in continuing. The bridge
+ * will just fail if it gets that far.
+ */
+ *to = -1;
+ strcpy(pa->status, "CONGESTION");
+ ast_cdr_failed(in->cdr);
+ return NULL;
+ }
}
#ifdef HAVE_EPOLL
diff --git a/main/channel.c b/main/channel.c
index d067222a4..f2b2c0210 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -3391,9 +3391,8 @@ int ast_indicate_data(struct ast_channel *chan, int _condition,
if (ts) {
/* We have a tone to play, yay. */
ast_debug(1, "Driver for channel '%s' does not support indication %d, emulating it\n", chan->name, condition);
- ast_playtones_start(chan, 0, ts->data, 1);
+ res = ast_playtones_start(chan, 0, ts->data, 1);
ts = ast_tone_zone_sound_unref(ts);
- res = 0;
chan->visible_indication = condition;
}
@@ -3982,10 +3981,11 @@ static int set_format(struct ast_channel *chan, int fmt, int *rawformat, int *fo
else
/* writing */
*trans = ast_translator_build_path(*rawformat, *format);
+ res = *trans ? 0 : -1;
ast_channel_unlock(chan);
ast_debug(1, "Set channel %s to %s format %s\n", chan->name,
direction ? "write" : "read", ast_getformatname(fmt));
- return 0;
+ return res;
}
int ast_set_read_format(struct ast_channel *chan, int fmt)