diff --git a/quic/priority/HTTPPriorityQueue.cpp b/quic/priority/HTTPPriorityQueue.cpp index 9455757c4..b24b0ff20 100644 --- a/quic/priority/HTTPPriorityQueue.cpp +++ b/quic/priority/HTTPPriorityQueue.cpp @@ -167,6 +167,8 @@ void HTTPPriorityQueue::clear() { for (auto& rr : roundRobins_) { rr.clear(); } + roundRobinElements_ = 0; + lowestRoundRobin_ = roundRobins_.size(); } const HTTPPriorityQueue::Element* FOLLY_NULLABLE diff --git a/quic/priority/test/HTTPPriorityQueueTest.cpp b/quic/priority/test/HTTPPriorityQueueTest.cpp index 1479a942d..3a3599a8e 100644 --- a/quic/priority/test/HTTPPriorityQueueTest.cpp +++ b/quic/priority/test/HTTPPriorityQueueTest.cpp @@ -21,6 +21,16 @@ class HTTPPriorityQueueTest : public testing::Test { }; TEST_F(HTTPPriorityQueueTest, EmptyQueue) { + queue_.clear(); + EXPECT_TRUE(queue_.empty()); +} + +TEST_F(HTTPPriorityQueueTest, IncrementalEmptyQueue) { + auto id = Identifier::fromStreamID(1); + auto priority = HTTPPriorityQueue::Priority(0, true); + queue_.insertOrUpdate(id, priority); + EXPECT_FALSE(queue_.empty()); + queue_.clear(); EXPECT_TRUE(queue_.empty()); }