aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2010-11-03 18:35:19 +0000
committerrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2010-11-03 18:35:19 +0000
commitf0ab15f8d10ad2a93bb85e0992e9991b0303cd6d (patch)
tree1ffe5dedcd9db9538f799d82cb6bbf748d2ae77e /channels
parent88cfac188620a17fb9105439c2c7c1aff1ed53bd (diff)
Merged revisions 293806 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r293806 | rmudgett | 2010-11-03 13:31:57 -0500 (Wed, 03 Nov 2010) | 27 lines Merged revisions 293805 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r293805 | rmudgett | 2010-11-03 13:23:04 -0500 (Wed, 03 Nov 2010) | 20 lines Party A in an analog 3-way call would continue to hear ringback after party C answers. All parties are analog FXS ports. 1) A calls B. 2) A flash hooks to call C. 3) A flash hooks to bring C into 3-way call before C answers. (A and B hear ringback) 4) C answers 5) A continues to hear ringback during the 3-way call. (All parties can hear each other.) * Fixed use of wrong variable in dahdi_bridge() that stopped ringback on the wrong subchannel. * Made several debug messages have more information. A similar issue happens if B and C are SIP channels. B continues to hear ringback. For some reason this only affects v1.8 and trunk. * Don't start ringback on the real and 3-way subchannels when creating the 3-way conference. Removing this code is benign on v1.6.2 and earlier. ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@293807 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_dahdi.c25
-rw-r--r--channels/sig_analog.c9
2 files changed, 17 insertions, 17 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 0edcc8601..bf67c3298 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -7082,11 +7082,14 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch
p1->subs[SUB_REAL].owner &&
p1->subs[SUB_REAL].inthreeway &&
(p1->subs[SUB_REAL].owner->_state == AST_STATE_RINGING)) {
- ast_debug(1, "Playing ringback on %s since %s is in a ringing three-way\n", c0->name, c1->name);
+ ast_debug(1,
+ "Playing ringback on %d/%d(%s) since %d/%d(%s) is in a ringing three-way\n",
+ p0->channel, oi0, c0->name, p1->channel, oi1, c1->name);
tone_zone_play_tone(p0->subs[oi0].dfd, DAHDI_TONE_RINGTONE);
os1 = p1->subs[SUB_REAL].owner->_state;
} else {
- ast_debug(1, "Stopping tones on %d/%d talking to %d/%d\n", p0->channel, oi0, p1->channel, oi1);
+ ast_debug(1, "Stopping tones on %d/%d(%s) talking to %d/%d(%s)\n",
+ p0->channel, oi0, c0->name, p1->channel, oi1, c1->name);
tone_zone_play_tone(p0->subs[oi0].dfd, -1);
}
if ((oi0 == SUB_THREEWAY) &&
@@ -7094,12 +7097,15 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch
p0->subs[SUB_REAL].owner &&
p0->subs[SUB_REAL].inthreeway &&
(p0->subs[SUB_REAL].owner->_state == AST_STATE_RINGING)) {
- ast_debug(1, "Playing ringback on %s since %s is in a ringing three-way\n", c1->name, c0->name);
+ ast_debug(1,
+ "Playing ringback on %d/%d(%s) since %d/%d(%s) is in a ringing three-way\n",
+ p1->channel, oi1, c1->name, p0->channel, oi0, c0->name);
tone_zone_play_tone(p1->subs[oi1].dfd, DAHDI_TONE_RINGTONE);
os0 = p0->subs[SUB_REAL].owner->_state;
} else {
- ast_debug(1, "Stopping tones on %d/%d talking to %d/%d\n", p1->channel, oi1, p0->channel, oi0);
- tone_zone_play_tone(p1->subs[oi0].dfd, -1);
+ ast_debug(1, "Stopping tones on %d/%d(%s) talking to %d/%d(%s)\n",
+ p1->channel, oi1, c1->name, p0->channel, oi0, c0->name);
+ tone_zone_play_tone(p1->subs[oi1].dfd, -1);
}
if ((oi0 == SUB_REAL) && (oi1 == SUB_REAL)) {
if (!p0->echocanbridged || !p1->echocanbridged) {
@@ -8215,7 +8221,9 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast)
(p->transfertobusy || (ast->_state != AST_STATE_BUSY))) {
int otherindex = SUB_THREEWAY;
- ast_verb(3, "Building conference on call on %s and %s\n", p->subs[SUB_THREEWAY].owner->name, p->subs[SUB_REAL].owner->name);
+ ast_verb(3, "Building conference call with %s and %s\n",
+ p->subs[SUB_THREEWAY].owner->name,
+ p->subs[SUB_REAL].owner->name);
/* Put them in the threeway, and flip */
p->subs[SUB_THREEWAY].inthreeway = 1;
p->subs[SUB_REAL].inthreeway = 1;
@@ -8227,11 +8235,6 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast)
ast_queue_control(p->subs[otherindex].owner, AST_CONTROL_UNHOLD);
p->subs[otherindex].needunhold = 1;
p->owner = p->subs[SUB_REAL].owner;
- if (ast->_state == AST_STATE_RINGING) {
- ast_debug(1, "Enabling ringtone on real and threeway\n");
- res = tone_zone_play_tone(p->subs[SUB_REAL].dfd, DAHDI_TONE_RINGTONE);
- res = tone_zone_play_tone(p->subs[SUB_THREEWAY].dfd, DAHDI_TONE_RINGTONE);
- }
} else {
ast_verb(3, "Dumping incomplete call on on %s\n", p->subs[SUB_THREEWAY].owner->name);
swap_subs(p, SUB_THREEWAY, SUB_REAL);
diff --git a/channels/sig_analog.c b/channels/sig_analog.c
index 18753270b..30a1de47d 100644
--- a/channels/sig_analog.c
+++ b/channels/sig_analog.c
@@ -3170,7 +3170,9 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
/* Lets see what we're up to */
if (((ast->pbx) || (ast->_state == AST_STATE_UP)) &&
(p->transfertobusy || (ast->_state != AST_STATE_BUSY))) {
- ast_verb(3, "Building conference on call on %s and %s\n", p->subs[ANALOG_SUB_THREEWAY].owner->name, p->subs[ANALOG_SUB_REAL].owner->name);
+ ast_verb(3, "Building conference call with %s and %s\n",
+ p->subs[ANALOG_SUB_THREEWAY].owner->name,
+ p->subs[ANALOG_SUB_REAL].owner->name);
/* Put them in the threeway, and flip */
analog_set_inthreeway(p, ANALOG_SUB_THREEWAY, 1);
analog_set_inthreeway(p, ANALOG_SUB_REAL, 1);
@@ -3182,11 +3184,6 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
ast_queue_control(p->subs[orig_3way_sub].owner, AST_CONTROL_UNHOLD);
}
p->owner = p->subs[ANALOG_SUB_REAL].owner;
- if (ast->_state == AST_STATE_RINGING) {
- ast_debug(1, "Enabling ringtone on real and threeway\n");
- analog_play_tone(p, ANALOG_SUB_REAL, ANALOG_TONE_RINGTONE);
- analog_play_tone(p, ANALOG_SUB_THREEWAY, ANALOG_TONE_RINGTONE);
- }
} else {
ast_verb(3, "Dumping incomplete call on %s\n", p->subs[ANALOG_SUB_THREEWAY].owner->name);
analog_swap_subs(p, ANALOG_SUB_THREEWAY, ANALOG_SUB_REAL);