[svn-commits] mjordan: trunk r417327 - in /trunk: ./ main/udptl.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Jun 26 07:24:29 CDT 2014


Author: mjordan
Date: Thu Jun 26 07:24:25 2014
New Revision: 417327

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=417327
Log:
udptl: Correct FEC to not consider negative sequence numbers as missing

When using FEC, with span=3 and entries=4 Asterisk will attempt to repair
the packet with sequence number 5, as it will see that packet -4 is
missing. The result is Asterisk sending garbage packets that can kill a
fax.

This patch adds a check to see if the sequence number is valid before
checking if the packet is missing.

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

#ASTERISK-23908 #close
Reported by: Torrey Searle
patches:
  udptl_fec.patch uploaded by Torrey Searle (License 5334)
........

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

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

Merged revisions 417324 from http://svn.asterisk.org/svn/asterisk/branches/12

Modified:
    trunk/   (props changed)
    trunk/main/udptl.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-12-merged' - no diff available.

Modified: trunk/main/udptl.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/udptl.c?view=diff&rev=417327&r1=417326&r2=417327
==============================================================================
--- trunk/main/udptl.c (original)
+++ trunk/main/udptl.c Thu Jun 26 07:24:25 2014
@@ -535,6 +535,12 @@
 				int k;
 				int which;
 				int limit = (l + m) & UDPTL_BUF_MASK;
+
+				/* only repair buffers that actually exist! */
+				if (seq_no <= (s->rx[l].fec_span * s->rx[l].fec_entries) - m) {
+					continue;
+				}
+
 				for (which = -1, k = (limit - s->rx[l].fec_span * s->rx[l].fec_entries) & UDPTL_BUF_MASK; k != limit; k = (k + s->rx[l].fec_entries) & UDPTL_BUF_MASK) {
 					if (s->rx[k].buf_len <= 0)
 						which = (which == -1) ? k : -2;




More information about the svn-commits mailing list