]> git.ipfire.org Git - thirdparty/asterisk.git/commit
udptl: Don't eat sequence numbers until OK is received 71/2871/3
authorGeorge Joseph <gjoseph@digium.com>
Wed, 18 May 2016 12:54:14 +0000 (06:54 -0600)
committerMark Michelson <mmichelson@digium.com>
Wed, 18 May 2016 19:05:52 +0000 (14:05 -0500)
commit08a7e1d0b0a7ae9d72d2ee1505601801e7a6ffa6
treed84e7f60169ccf21cb280829a2c604e3031336a6
parent6d4928a1352ceeb4d0996511ddc5ddfc64793514
udptl:  Don't eat sequence numbers until OK is received

Scenario:
Local fax -> Asterisk w/ firewall -> Provider -> Remote fax

* Local fax starts rtp call to remote fax
* Remote fax starts t38 call back to local fax.
* Local fax sends t38 no-signal to Asterisk before sending an OK.
* udptl processes the frame and increments the expected sequence number.
* chan_sip drops the frame because the call isn't up so nothing goes out
  the external interface to open the port for incoming packets.
* Local fax sends OK and Asterisk sends OK to the remote fax.
* Remote fax sends t38 packets which are dropped by the firewall.
* Local fax re-sends t38 no-signal with the same sequence number.
* udptl drops the frame because it thinks it's a dup.
* Still no outgoing packets to open the firewall.
* t38 negotiation fails.

The patch drops frames t38 received before udptl sequence processing
when the call hasn't been answered yet.  The second no-signal frame
is then seen as new and is relayed out the external interface which
opens the port and allows negotiation to continue.

ASTERISK-26034 #close

Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9
main/udptl.c