A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/Haivision/srt/commit/81a31da7d378e5ffcfabc8058ebefd1ee4337ecb below:

[core] Fix RCV drop count when dropping on SND DROP REQ. · Haivision/srt@81a31da · GitHub

@@ -110,7 +110,9 @@ int CRcvBufferNew::insert(CUnit* unit)

110 110

const int offset = CSeqNo::seqoff(m_iStartSeqNo, seqno);

111 111 112 112

IF_RCVBUF_DEBUG(ScopedLog scoped_log);

113 -

IF_RCVBUF_DEBUG(scoped_log.ss << "CRcvBufferNew::insert: seqno " << seqno << " m_iStartSeqNo " << m_iStartSeqNo << " offset " << offset);

113 +

IF_RCVBUF_DEBUG(scoped_log.ss << "CRcvBufferNew::insert: seqno " << seqno);

114 +

IF_RCVBUF_DEBUG(scoped_log.ss << " msgno " << unit->m_Packet.getMsgSeq(m_bPeerRexmitFlag));

115 +

IF_RCVBUF_DEBUG(scoped_log.ss << " m_iStartSeqNo " << m_iStartSeqNo << " offset " << offset);

114 116 115 117

if (offset < 0)

116 118

{

@@ -198,15 +200,17 @@ int CRcvBufferNew::dropUpTo(int32_t seqno)

198 200

return iDropCnt;

199 201

}

200 202 201 -

void CRcvBufferNew::dropMessage(int32_t seqnolo, int32_t seqnohi, int32_t msgno)

203 +

int CRcvBufferNew::dropMessage(int32_t seqnolo, int32_t seqnohi, int32_t msgno)

202 204

{

203 205

IF_RCVBUF_DEBUG(ScopedLog scoped_log);

204 206

IF_RCVBUF_DEBUG(scoped_log.ss << "CRcvBufferNew::dropMessage: seqnolo " << seqnolo << " seqnohi " << seqnohi << " m_iStartSeqNo " << m_iStartSeqNo);

205 207

// TODO: count bytes as removed?

206 208

const int end_pos = incPos(m_iStartPos, m_iMaxPosInc);

207 209

if (msgno != 0)

208 210

{

211 +

IF_RCVBUF_DEBUG(scoped_log.ss << " msgno " << msgno);

209 212

int minDroppedOffset = -1;

213 +

int iDropCnt = 0;

210 214

for (int i = m_iStartPos; i != end_pos; i = incPos(i))

211 215

{

212 216

// TODO: Maybe check status?

@@ -216,12 +220,14 @@ void CRcvBufferNew::dropMessage(int32_t seqnolo, int32_t seqnohi, int32_t msgno)

216 220

const int32_t msgseq = m_entries[i].pUnit->m_Packet.getMsgSeq(m_bPeerRexmitFlag);

217 221

if (msgseq == msgno)

218 222

{

223 +

++iDropCnt;

219 224

dropUnitInPos(i);

220 225

m_entries[i].status = EntryState_Drop;

221 226

if (minDroppedOffset == -1)

222 227

minDroppedOffset = offPos(m_iStartPos, i);

223 228

}

224 229

}

230 +

IF_RCVBUF_DEBUG(scoped_log.ss << " iDropCnt " << iDropCnt);

225 231

// Check if units before m_iFirstNonreadPos are dropped.

226 232

bool needUpdateNonreadPos = (minDroppedOffset != -1 && minDroppedOffset <= getRcvDataSize());

227 233

releaseNextFillerEntries();

@@ -236,7 +242,7 @@ void CRcvBufferNew::dropMessage(int32_t seqnolo, int32_t seqnohi, int32_t msgno)

236 242

m_iFirstReadableOutOfOrder = -1;

237 243

updateFirstReadableOutOfOrder();

238 244

}

239 -

return;

245 +

return iDropCnt;

240 246

}

241 247 242 248

// Drop by packet seqno range.

@@ -246,15 +252,17 @@ void CRcvBufferNew::dropMessage(int32_t seqnolo, int32_t seqnohi, int32_t msgno)

246 252

{

247 253

LOGC(rbuflog.Debug, log << "CRcvBufferNew.dropMessage(): nothing to drop. Requested [" << seqnolo << "; "

248 254

<< seqnohi << "]. Buffer start " << m_iStartSeqNo << ".");

249 -

return;

255 +

return 0;

250 256

}

251 257 252 258

const int start_off = max(0, offset_a);

253 259

const int last_pos = incPos(m_iStartPos, offset_b);

254 260

int minDroppedOffset = -1;

261 +

int iDropCnt = 0;

255 262

for (int i = incPos(m_iStartPos, start_off); i != end_pos && i != last_pos; i = incPos(i))

256 263

{

257 264

dropUnitInPos(i);

265 +

++iDropCnt;

258 266

m_entries[i].status = EntryState_Drop;

259 267

if (minDroppedOffset == -1)

260 268

minDroppedOffset = offPos(m_iStartPos, i);

@@ -277,6 +285,8 @@ void CRcvBufferNew::dropMessage(int32_t seqnolo, int32_t seqnohi, int32_t msgno)

277 285

m_iFirstReadableOutOfOrder = -1;

278 286

updateFirstReadableOutOfOrder();

279 287

}

288 + 289 +

return iDropCnt;

280 290

}

281 291 282 292

int CRcvBufferNew::readMessage(char* data, size_t len, SRT_MSGCTRL* msgctrl)

@@ -288,11 +298,11 @@ int CRcvBufferNew::readMessage(char* data, size_t len, SRT_MSGCTRL* msgctrl)

288 298

return 0;

289 299

}

290 300 291 -

IF_RCVBUF_DEBUG(ScopedLog scoped_log);

292 -

IF_RCVBUF_DEBUG(scoped_log.ss << "CRcvBufferNew::readMessage. m_iStartSeqNo " << m_iStartSeqNo);

293 - 294 301

const int readPos = canReadInOrder ? m_iStartPos : m_iFirstReadableOutOfOrder;

295 302 303 +

IF_RCVBUF_DEBUG(ScopedLog scoped_log);

304 +

IF_RCVBUF_DEBUG(scoped_log.ss << "CRcvBufferNew::readMessage. m_iStartSeqNo " << m_iStartSeqNo << " m_iStartPos " << m_iStartPos << " readPos " << readPos);

305 + 296 306

size_t remain = len;

297 307

char* dst = data;

298 308

int pkts_read = 0;

@@ -381,6 +391,8 @@ int CRcvBufferNew::readMessage(char* data, size_t len, SRT_MSGCTRL* msgctrl)

381 391

LOGC(rbuflog.Error, log << "readMessage: small dst buffer, copied only " << bytes_read << "/" << bytes_extracted << " bytes.");

382 392

}

383 393 394 +

IF_RCVBUF_DEBUG(scoped_log.ss << " pldi64 " << *reinterpret_cast<uint64_t*>(data));

395 + 384 396

return bytes_read;

385 397

}

386 398

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