Match libav's RTMP receive window rollover behaviour
This commit is contained in:
parent
f3c003481d
commit
3e85da2afd
2 changed files with 6 additions and 1 deletions
|
@ -475,6 +475,11 @@ bool RTMPStream::Chunk::Parse(Socket::Buffer &buffer){
|
|||
}
|
||||
lastrecv[cs_id] = *this;
|
||||
RTMPStream::rec_cnt += i + real_len;
|
||||
if (RTMPStream::rec_cnt >= 0xf0000000){
|
||||
INFO_MSG("Resetting receive window due to impending rollover");
|
||||
RTMPStream::rec_cnt -= 0xf0000000;
|
||||
RTMPStream::rec_window_at = 0;
|
||||
}
|
||||
if (len_left == 0){
|
||||
return true;
|
||||
}else{
|
||||
|
|
|
@ -1599,7 +1599,7 @@ namespace Mist{
|
|||
while (next.Parse(inputBuffer)){
|
||||
|
||||
// send ACK if we received a whole window
|
||||
if ((RTMPStream::rec_cnt - RTMPStream::rec_window_at > RTMPStream::rec_window_size) || Util::bootSecs() > lastAck+15){
|
||||
if ((RTMPStream::rec_cnt - RTMPStream::rec_window_at > RTMPStream::rec_window_size / 4) || Util::bootSecs() > lastAck+15){
|
||||
lastAck = Util::bootSecs();
|
||||
RTMPStream::rec_window_at = RTMPStream::rec_cnt;
|
||||
myConn.SendNow(RTMPStream::SendCTL(3, RTMPStream::rec_cnt)); // send ack (msg 3)
|
||||
|
|
Loading…
Add table
Reference in a new issue