From ef0da09c740191913ceacb0a40c10dee93dc9fb8 Mon Sep 17 00:00:00 2001
From: Matthew Nicholson <mnicholson@digium.com>
Date: Thu, 14 Jan 2010 16:14:35 +0000
Subject: [PATCH] This change fixes a few bugs in the way the far max IFP was
 calculated that were introduced in r231692.

(closes issue #16497)
Reported by: globalnetinc
Patches:
      udptl-max-ifp-fix1.diff uploaded by mnicholson (license 96)
Tested by: globalnetinc



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@240078 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/udptl.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/main/udptl.c b/main/udptl.c
index fdcb3ab773..20b80bd89c 100644
--- a/main/udptl.c
+++ b/main/udptl.c
@@ -802,10 +802,17 @@ static void calculate_far_max_ifp(struct ast_udptl *udptl)
 		 * zero in this loop; we'd rather send smaller IFPs (and thus reduce
 		 * the image data transfer rate) than sacrifice redundancy completely
 		 */
-		for ( ;
-		      (new_max < 80) && (udptl->error_correction_entries > 1);
-		      --udptl->error_correction_entries) {
+		for (;;) {
 			new_max = (udptl->far_max_datagram - 8) / (udptl->error_correction_entries + 1);
+
+			if ((new_max < 80) && (udptl->error_correction_entries > 1)) {
+				/* the max ifp is not large enough, subtract an
+				 * error correction entry and calculate again
+				 * */
+				--udptl->error_correction_entries;
+			} else {
+				break;
+			}
 		}
 		break;
 	case UDPTL_ERROR_CORRECTION_FEC:
-- 
GitLab