BigPig0/RelayLive

丢包bug

Closed this issue · 1 comments

我发现一个地方,好像存在问题
rtp.cpp 中 InserSortList函数

            //这个包不是紧接着前一个包
            if(seqLast+1 != it_pos->first.seq) {
                break;
            }

我进行了修改

            //这个包不是紧接着前一个包
            if((uint16_t)(seqLast+1) != it_pos->first.seq) {
                break;
            }

应该是seqLast+1临时值不是用uint16_t,而是int,所以导致这里的判断(65536 != 65535)后,跳出了循环,导致加入了很多rtp包,但是并没有处理,后边直接丢掉

多谢提醒,数字1默认类型的问题。另外这个rtp组包完全重写了,原来算法用包队列大小来丢弃过早的包不好