]> git.ipfire.org Git - thirdparty/asterisk.git/commit
chan_iax2: Block unnecessary control frames to/from the wire. certified/11.2
authorRichard Mudgett <rmudgett@digium.com>
Fri, 7 Feb 2014 19:20:43 +0000 (19:20 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 7 Feb 2014 19:20:43 +0000 (19:20 +0000)
commitde5fd3b120a9b0f7a0fc655dfe889dd556d88ce5
tree51a73d3e28406754e851f684ea48d89998b4d009
parent38c270e2d0df8c447e6f4ee3b49c65c13bf893b7
chan_iax2: Block unnecessary control frames to/from the wire.

Establishing an IAX2 call between Asterisk v1.4 and v1.8 (or later)
results in an unexpected call disconnect.  The problem happens because
newer values in the enum ast_control_frame_type are not consistent between
the branch versions of Asterisk.

For example:
1) v1.4 calls v1.8 (or later) using IAX2

2) v1.8 answers and sends a connected line update control frame.  (on v1.8
AST_CONTROL_CONNECTED_LINE = 22)

3) v1.4 receives the control frame as an end-of-q (on v1.4
AST_CONTROL_END_OF_Q = 22)

4) v1.4 disconnects the call once the receive queue becomes empty.

Several things are done by this patch to fix the problem and attempt to
prevent it from happening again in the future:

* Added a warning at the definition of enum ast_control_frame_type about
how to add new control frame values.

* Made block sending and receiving control frames that have no reason to
go over the wire.

* Extended the connectedline iax.conf parameter to also include the
redirecting information updates.

* Updated the connectedline iax.conf parameter documentation to include a
notice that the parameter must be "no" when the peer is an Asterisk v1.4
instance.

(closes issue AST-1302)

Review: https://reviewboard.asterisk.org/r/3174/
........

Merged revisions 407678 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 407727 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/11.2@407741 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_iax2.c
configs/iax.conf.sample
include/asterisk/frame.h