浏览代码

fixed a possible MTU issue when redundant num=0

wangyu- 8 年之前
父节点
当前提交
9336246f00
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      fec_manager.cpp

+ 4 - 1
fec_manager.cpp

@@ -282,7 +282,10 @@ int fec_encode_manager_t::input(char *s,int len/*,int &is_first_packet*/)
     			int best_data_num=fec_data_num;
     			int best_data_num=fec_data_num;
     			for(int i=1;i<actual_data_num;i++)
     			for(int i=1;i<actual_data_num;i++)
     			{
     			{
-    				u32_t new_len=(blob_encode.get_shard_len(i,0)+header_overhead)*(i+fec_redundant_num);
+    				u32_t shard_len=blob_encode.get_shard_len(i,0);
+    				if(shard_len>(u32_t)fec_mtu) continue;
+
+    				u32_t new_len=(shard_len+header_overhead)*(i+fec_redundant_num);
     				if(new_len<best_len)
     				if(new_len<best_len)
     				{
     				{
     					best_len=new_len;
     					best_len=new_len;