]> git.ipfire.org Git - thirdparty/asterisk.git/commit
bridges/bridge_t38: Add a bridging module for managing T.38 state 25/1725/4
authorMatt Jordan <mjordan@digium.com>
Sat, 28 Nov 2015 14:46:02 +0000 (08:46 -0600)
committerMatt Jordan <mjordan@digium.com>
Tue, 1 Dec 2015 02:11:43 +0000 (20:11 -0600)
commit6614babea27fbafbe11820ea03737dd5c4f9ecec
tree0920e64b2f32863c146dd578784834b1638be0ac
parent3fcf160faeb036529c575b66d73e7978f475fb28
bridges/bridge_t38: Add a bridging module for managing T.38 state

When 4875e5ac32 was merged, it fixed several issues with a direct media bridge
transitioning to handling a T.38 fax. However, it uncovered a race condition
caused by the bridging core. When a channel involved in a T.38 fax leaves a
bridge, the frame queued by the channel driver that should inform the far side
that it is no longer in a T.38 fax may not make it across the bridge. The
bridging framework is *extremely* aggressive in tearing down the bridge, and
control frames that are currently in flight *may* get dropped.

This patch adds a new module to the bridging framework, bridge_t38. This module
maintains some notion of the T.38 state for the two channels in a bridge. When
the bridge detects that it is being torn down or when one of the two channels
leaves, it informs the respective channel(s) that they should stop faxing. This
ensures that channels switch back to audio if they survive and are ejected out
of a bridge while faxing.

ASTERISK-25582

Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0
CHANGES
bridges/bridge_t38.c [new file with mode: 0644]