+8
-5
lines changedFilter options
+8
-5
lines changed Original file line number Diff line number Diff line change
@@ -8810,8 +8810,13 @@ void srt::CUDT::processCtrlDropReq(const CPacket& ctrlpkt)
8810
8810
8811
8811
{
8812
8812
UniqueLock rlock(m_RecvLock);
8813
-
const bool using_rexmit_flag = m_bPeerRexmitFlag;
8813
+
// With both TLPktDrop and TsbPd enabled, a message always consists only of one packet.
8814
+
// It will be dropped as too late anyway. Not dropping it from the receiver buffer
8815
+
// in advance reduces false drops if the packet somehow manages to arrive.
8816
+
// Still remove the record from the loss list to cease further retransmission requests.
8817
+
if (!m_bTLPktDrop || !m_bTsbPd)
8814
8818
{
8819
+
const bool using_rexmit_flag = m_bPeerRexmitFlag;
8815
8820
ScopedLock rblock(m_RcvBufferLock);
8816
8821
#if ENABLE_NEW_RCVBUFFER
8817
8822
const int iDropCnt = m_pRcvBuffer->dropMessage(dropdata[0], dropdata[1], ctrlpkt.getMsgSeq(using_rexmit_flag));
@@ -8845,10 +8850,8 @@ void srt::CUDT::processCtrlDropReq(const CPacket& ctrlpkt)
8845
8850
8846
8851
dropFromLossLists(dropdata[0], dropdata[1]);
8847
8852
8848
-
// move forward with current recv seq no.
8849
-
// SYMBOLIC:
8850
-
// if (dropdata[0] <=% 1 +% m_iRcvCurrSeqNo
8851
-
// && dropdata[1] >% m_iRcvCurrSeqNo )
8853
+
// If dropping ahead of the current largest sequence number,
8854
+
// move the recv seq number forward.
8852
8855
if ((CSeqNo::seqcmp(dropdata[0], CSeqNo::incseq(m_iRcvCurrSeqNo)) <= 0)
8853
8856
&& (CSeqNo::seqcmp(dropdata[1], m_iRcvCurrSeqNo) > 0))
8854
8857
{
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4