-
Notifications
You must be signed in to change notification settings - Fork 865
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[core] Fixed CRcvBuffer::getAvailSize() may jump around. #2490
Conversation
This comment was marked as off-topic.
This comment was marked as off-topic.
0ab3630
to
8318929
Compare
Another related issue:
|
any comment? |
I would mention this in a comment near data[ACKD_BUFFERLEFT] = (int) getAvailRcvBufferSizeNoLock(); |
Might also make sense to add an assertion 🤔 SRT_ASSERT(m_iRcvLastSkipAck == m_iRcvLastAck); |
done |
And suddenly I've got this during a long-term test with an artificial 3% packet loss. 16:57:07.036350 [W] [METRICS] Detected loss of 1 packets (seqno [1190757; 1190758))
Assertion failed: m_iRcvLastSkipAck == m_iRcvLastAck, file srtcore\core.cpp, line 8003 |
Oops, it may caused by this
|
If https://github.com/Haivision/srt/pull/2530/files#r1020280948 was applied, I'm OK to revert this PR. |
But it's strange to return |
The value that should be reported back to the sender should be the number of packet cells in the receiver buffer that can be still filled in. Not sure whether the retransmission ignores this value or not, the intention is to make the sender stop sending if there's no storage on the receiver side that could store it. This means that a retransmission should be always allowed, while only new packets could be held back, but then the value reported should be the distance between the last received seequence and the first sequence taken out from capacity. So you should do simply:
The value of Note that there will be little significance of the border values here in live mode, but in file mode this functionality is crucial. |
Fixed #2467 (comment)