mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-09 03:18:30 +00:00
Merged 349339; updated .version and ChangeLog
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.8.8.1@349390 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
19
ChangeLog
19
ChangeLog
@@ -1,3 +1,22 @@
|
|||||||
|
2011-12-29 Asterisk Development Team <asteriskteam@digium.com>
|
||||||
|
|
||||||
|
* Asterisk 1.8.8.1 Released.
|
||||||
|
|
||||||
|
* Handle AST_CONTROL_UPDATE_RTP_PEER frames in local bridge loop
|
||||||
|
|
||||||
|
Failing to handle AST_CONTROL_UPDATE_RTP_PEER frames in the local bridge loop
|
||||||
|
causes the loop to exit prematurely. This causes a variety of negative side
|
||||||
|
effects, depending on when the loop exits. This patch handles the frame by
|
||||||
|
essentially swallowing the frame in the local loop, as the current channel
|
||||||
|
drivers expect the RTP bridge to handle the frame, and, in the case of the
|
||||||
|
local bridge loop, no additional action is necessary.
|
||||||
|
|
||||||
|
(closes issue ASTERISK-19095)
|
||||||
|
Reported by: Stefan Schmidt
|
||||||
|
Tested by: Matt Jordan
|
||||||
|
|
||||||
|
Review: https://reviewboard.asterisk.org/r/1640/
|
||||||
|
|
||||||
2011-12-15 Asterisk Development Team <asteriskteam@digium.com>
|
2011-12-15 Asterisk Development Team <asteriskteam@digium.com>
|
||||||
|
|
||||||
* Asterisk 1.8.8.0 Released.
|
* Asterisk 1.8.8.0 Released.
|
||||||
|
|||||||
@@ -889,7 +889,8 @@ static enum ast_bridge_result local_bridge_loop(struct ast_channel *c0, struct a
|
|||||||
(fr->subclass.integer == AST_CONTROL_UNHOLD) ||
|
(fr->subclass.integer == AST_CONTROL_UNHOLD) ||
|
||||||
(fr->subclass.integer == AST_CONTROL_VIDUPDATE) ||
|
(fr->subclass.integer == AST_CONTROL_VIDUPDATE) ||
|
||||||
(fr->subclass.integer == AST_CONTROL_SRCUPDATE) ||
|
(fr->subclass.integer == AST_CONTROL_SRCUPDATE) ||
|
||||||
(fr->subclass.integer == AST_CONTROL_T38_PARAMETERS)) {
|
(fr->subclass.integer == AST_CONTROL_T38_PARAMETERS) ||
|
||||||
|
(fr->subclass.integer == AST_CONTROL_UPDATE_RTP_PEER)) {
|
||||||
/* If we are going on hold, then break callback mode and P2P bridging */
|
/* If we are going on hold, then break callback mode and P2P bridging */
|
||||||
if (fr->subclass.integer == AST_CONTROL_HOLD) {
|
if (fr->subclass.integer == AST_CONTROL_HOLD) {
|
||||||
if (instance0->engine->local_bridge) {
|
if (instance0->engine->local_bridge) {
|
||||||
@@ -910,7 +911,10 @@ static enum ast_bridge_result local_bridge_loop(struct ast_channel *c0, struct a
|
|||||||
instance0->bridged = instance1;
|
instance0->bridged = instance1;
|
||||||
instance1->bridged = instance0;
|
instance1->bridged = instance0;
|
||||||
}
|
}
|
||||||
ast_indicate_data(other, fr->subclass.integer, fr->data.ptr, fr->datalen);
|
/* Since UPDATE_BRIDGE_PEER is only used by the bridging code, don't forward it */
|
||||||
|
if (fr->subclass.integer != AST_CONTROL_UPDATE_RTP_PEER) {
|
||||||
|
ast_indicate_data(other, fr->subclass.integer, fr->data.ptr, fr->datalen);
|
||||||
|
}
|
||||||
ast_frfree(fr);
|
ast_frfree(fr);
|
||||||
} else if (fr->subclass.integer == AST_CONTROL_CONNECTED_LINE) {
|
} else if (fr->subclass.integer == AST_CONTROL_CONNECTED_LINE) {
|
||||||
if (ast_channel_connected_line_macro(who, other, fr, other == c0, 1)) {
|
if (ast_channel_connected_line_macro(who, other, fr, other == c0, 1)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user