Index: asterisk-1.8.22.0/apps/app_dial.c =================================================================== --- asterisk-1.8.22.0.orig/apps/app_dial.c 2013-05-22 12:44:06.000000000 +0100 +++ asterisk-1.8.22.0/apps/app_dial.c 2013-05-22 13:28:29.000000000 +0100 @@ -1349,11 +1349,21 @@ } break; case AST_CONTROL_PROGRESS: + /* PROGRESS usually indicates early media, so if we cannot use early media + * becasue of a multi-target dial, and assuming it is otherwise okay, + * transmute a PROGRESS into a RINGING. Otherwise, just forward the PROGRESS + * and hope for the best. + */ ast_verb(3, "%s is making progress passing it to %s\n", c->name, in->name); /* Setup early media if appropriate */ - if (single && !caller_entertained - && CAN_EARLY_BRIDGE(peerflags, in, c)) { - ast_channel_early_bridge(in, c); + if (!caller_entertained && CAN_EARLY_BRIDGE(peerflags, in, c)) { + if (single) { + ast_channel_early_bridge(in, c); + } else if (!(pa->sentringing) && !ast_test_flag64(outgoing, OPT_MUSICBACK) && !ast_test_flag64(outgoing, OPT_RINGBACK)) { + /* Or transmute to RINGING if that's not too nasty */ + ast_indicate(in, AST_CONTROL_RINGING); + pa->sentringing++; + } } if (!ast_test_flag64(outgoing, OPT_RINGBACK)) { if (single || (!single && !pa->sentringing)) {