Skip to content

Commit 371ed74

Browse files
sandarshmeta-codesync[bot]
authored andcommitted
Fix setGroupAndSubgroup() for desc fetch
Summary: Fix MoQSession::setGroupAndSubgroup() to honor group order Reviewed By: sharmafb Differential Revision: D88812495 fbshipit-source-id: d8fd81149b1eb36249c811baaccd84434b5dd697
1 parent 864e219 commit 371ed74

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

moxygen/MoQSession.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -392,11 +392,18 @@ class StreamPublisherImpl
392392
}
393393

394394
bool setGroupAndSubgroup(uint64_t groupID, uint64_t subgroupID) {
395-
if (groupID < header_.group) {
395+
// Check group direction based on the publisher's GroupOrder
396+
auto groupOrder =
397+
publisher_ ? publisher_->getGroupOrder() : GroupOrder::OldestFirst;
398+
bool isDescending = (groupOrder == GroupOrder::NewestFirst);
399+
bool groupMovedWrongDirection = isDescending
400+
? (groupID > header_.group && header_.group != 0)
401+
: (groupID < header_.group);
402+
if (groupMovedWrongDirection) {
396403
return false;
397-
} else if (groupID > header_.group) {
398-
// TODO(T211026595): reverse this check with group order
399-
// Fetch group advanced, reset expected object
404+
}
405+
if (groupID != header_.group) {
406+
// Group changed, reset expected object
400407
header_.id = std::numeric_limits<uint64_t>::max();
401408
}
402409
header_.group = groupID;

moxygen/MoQSession.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,10 @@ class MoQSession : public Subscriber,
267267
groupOrder_ = groupOrder;
268268
}
269269

270+
GroupOrder getGroupOrder() const {
271+
return groupOrder_;
272+
}
273+
270274
folly::Optional<uint8_t> getPublisherPriority() const {
271275
return publisherPriority_;
272276
}

0 commit comments

Comments
 (0)