From 98f48e3e05ad158c7507550a2ce79cfff8c1f189 Mon Sep 17 00:00:00 2001
From: Maxim Sharabayko <maxlovic@gmail.com>
Date: Fri, 19 Apr 2024 14:59:01 +0200
Subject: [PATCH] [core] Fixed stats counting packets dropped by a group.

---
 srtcore/group.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/srtcore/group.cpp b/srtcore/group.cpp
index 1539245a0..221e61911 100644
--- a/srtcore/group.cpp
+++ b/srtcore/group.cpp
@@ -2309,6 +2309,15 @@ int CUDTGroup::recv(char* buf, int len, SRT_MSGCTRL& w_mc)
         }
         fillGroupData((w_mc), w_mc);
 
+        const int32_t iNumDropped = (CSeqNo(w_mc.pktseq) - CSeqNo(m_RcvBaseSeqNo)) - 1;
+        if (iNumDropped > 0)
+        {
+            m_stats.recvDrop.count(stats::BytesPackets(iNumDropped * static_cast<uint64_t>(avgRcvPacketSize()), iNumDropped));
+            LOGC(grlog.Warn,
+                log << "@" << m_GroupID << " GROUP RCV-DROPPED " << iNumDropped << " packet(s): seqno %"
+                << m_RcvBaseSeqNo << " to %" << w_mc.pktseq);
+        }
+
         HLOGC(grlog.Debug,
               log << "grp/recv: $" << id() << ": Update m_RcvBaseSeqNo: %" << m_RcvBaseSeqNo << " -> %" << w_mc.pktseq);
         m_RcvBaseSeqNo = w_mc.pktseq;