diff options
-rw-r--r-- | apps/app_dial.c | 11 | ||||
-rw-r--r-- | main/channel.c | 6 |
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) |