summaryrefslogtreecommitdiff
path: root/main/udptl.c
diff options
context:
space:
mode:
authorMatthew Nicholson <mnicholson@digium.com>2010-01-14 16:14:35 +0000
committerMatthew Nicholson <mnicholson@digium.com>2010-01-14 16:14:35 +0000
commitef0da09c740191913ceacb0a40c10dee93dc9fb8 (patch)
treef463b1e14026931c0eb91af12a957199030797f8 /main/udptl.c
parent712b500ee22e03073b2e581cc8f4498bbd231c8e (diff)
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
Diffstat (limited to 'main/udptl.c')
-rw-r--r--main/udptl.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/main/udptl.c b/main/udptl.c
index fdcb3ab77..20b80bd89 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: