Skip to content

Commit

Permalink
Fix several loops in SequenceNumberTranslator (lynckia#784)
Browse files Browse the repository at this point in the history
  • Loading branch information
jcague authored Mar 1, 2017
1 parent 2e2286b commit 56e1491
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
2 changes: 1 addition & 1 deletion erizo/src/erizo/rtp/SequenceNumberTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ SequenceNumber SequenceNumberTranslator::get(uint16_t input_sequence_number, boo

add(SequenceNumber{input_sequence_number, output_sequence_number, type});
last_input_sequence_number_ = input_sequence_number;
if (last_input_sequence_number_ - kMaxDistance > first_input_sequence_number_) {
if (RtpUtils::sequenceNumberLessThan(first_input_sequence_number_, last_input_sequence_number_ - kMaxDistance)) {
first_input_sequence_number_ = last_input_sequence_number_ - kMaxDistance;
}
SequenceNumber info = get(input_sequence_number);
Expand Down
30 changes: 15 additions & 15 deletions erizo/src/test/rtp/SequenceNumberTranslatorTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,24 +57,21 @@ TEST_P(SequenceNumberTranslatorTest, shouldReturnRightOutputSequenceNumbers) {
SequenceNumber output = translator.get(packet.sequence_number, skip);
EXPECT_THAT(output.output, Eq(packet.expected_output));
EXPECT_THAT(output.type, Eq(packet.expected_type));
}
}

TEST_P(SequenceNumberTranslatorTest, shouldReturnRightInputSequenceNumbers) {
for (Packet packet : queue) {
bool skip = packet.state == PacketState::Skip;
translator.get(packet.sequence_number, skip);
translator.reverse(packet.expected_output);
ASSERT_THAT(output.input, Eq(packet.sequence_number));
ASSERT_THAT(output.type, Eq(packet.expected_type));
}
}

// Reverse look-up
for (Packet packet : queue) {
if (packet.expected_type != SequenceNumberType::Valid) {
continue;
}
SequenceNumber output = translator.reverse(packet.expected_output);
EXPECT_THAT(output.input, Eq(packet.sequence_number));
EXPECT_THAT(output.type, Eq(packet.expected_type));
std::vector<Packet> getLongQueue(int size) {
std::vector<Packet> queue;
for (int i = 0; i <= size; i++) {
int input_sequence_number = i % 65535;
queue.push_back(Packet{input_sequence_number, PacketState::Forward,
input_sequence_number, SequenceNumberType::Valid});
}
return queue;
}

INSTANTIATE_TEST_CASE_P(
Expand Down Expand Up @@ -139,4 +136,7 @@ INSTANTIATE_TEST_CASE_P(
std::vector<Packet>({{ 65535, PacketState::Forward, 65535, SequenceNumberType::Valid},
{ 1, PacketState::Forward, 1, SequenceNumberType::Valid},
{ 0, PacketState::Skip, 0, SequenceNumberType::Discard},
{ 2, PacketState::Forward, 2, SequenceNumberType::Valid}})));
{ 2, PacketState::Forward, 2, SequenceNumberType::Valid}}),

// Support multiple loops
getLongQueue(65535 * 2)));

0 comments on commit 56e1491

Please sign in to comment.