mediasoup 3.19.19 → 3.19.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/node/lib/Worker.d.ts +1 -1
- package/node/lib/Worker.d.ts.map +1 -1
- package/node/lib/Worker.js +8 -2
- package/node/lib/WorkerTypes.d.ts +8 -4
- package/node/lib/WorkerTypes.d.ts.map +1 -1
- package/node/lib/index.d.ts +1 -1
- package/node/lib/index.d.ts.map +1 -1
- package/node/lib/index.js +2 -1
- package/node/lib/sctpParametersTypes.d.ts +3 -13
- package/node/lib/sctpParametersTypes.d.ts.map +1 -1
- package/node/lib/test/test-PlainTransport.js +8 -3
- package/node/lib/test/test-WebRtcTransport.js +9 -4
- package/package.json +10 -10
- package/worker/Makefile +0 -4
- package/worker/fuzzer/src/fuzzer.cpp +6 -5
- package/worker/include/RTC/DataConsumer.hpp +4 -14
- package/worker/include/RTC/SCTP/TODO_SCTP.md +18 -10
- package/worker/include/RTC/SCTP/association/Association.hpp +39 -31
- package/worker/include/RTC/SCTP/association/{AssociationDeferredListener.hpp → AssociationListenerDeferrer.hpp} +10 -8
- package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +77 -0
- package/worker/include/RTC/SCTP/association/NegotiatedCapabilities.hpp +2 -2
- package/worker/include/RTC/SCTP/association/PacketSender.hpp +2 -2
- package/worker/include/RTC/SCTP/association/StateCookie.hpp +2 -2
- package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +272 -0
- package/worker/include/RTC/SCTP/association/TCBContext.hpp +67 -0
- package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +81 -11
- package/worker/include/RTC/SCTP/common/UnwrappedSequenceNumber.hpp +274 -0
- package/worker/include/RTC/SCTP/packet/Chunk.hpp +0 -1
- package/worker/include/RTC/SCTP/packet/UserData.hpp +1 -0
- package/worker/include/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.hpp +14 -10
- package/worker/include/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.hpp +14 -10
- package/worker/include/RTC/SCTP/packet/parameters/ZeroChecksumAcceptableParameter.hpp +13 -2
- package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +7 -1
- package/worker/include/RTC/SCTP/public/AssociationListener.hpp +11 -0
- package/worker/include/RTC/SCTP/public/Message.hpp +1 -0
- package/worker/include/RTC/SCTP/public/SctpOptions.hpp +4 -4
- package/worker/include/RTC/SctpAssociation.hpp +2 -2
- package/worker/include/RTC/Transport.hpp +9 -13
- package/worker/include/Settings.hpp +2 -1
- package/worker/include/Utils.hpp +130 -6
- package/worker/meson.build +10 -39
- package/worker/meson_options.txt +0 -1
- package/worker/scripts/package-lock.json +6 -6
- package/worker/src/DepLibUring.cpp +1 -1
- package/worker/src/RTC/DataConsumer.cpp +5 -29
- package/worker/src/RTC/PipeTransport.cpp +15 -12
- package/worker/src/RTC/PlainTransport.cpp +15 -12
- package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +5 -5
- package/worker/src/RTC/RTP/RtpStream.cpp +2 -2
- package/worker/src/RTC/RTP/RtxStream.cpp +1 -1
- package/worker/src/RTC/RateCalculator.cpp +5 -5
- package/worker/src/RTC/SCTP/association/Association.cpp +218 -148
- package/worker/src/RTC/SCTP/association/{AssociationDeferredListener.cpp → AssociationListenerDeferrer.cpp} +38 -30
- package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +244 -0
- package/worker/src/RTC/SCTP/association/NegotiatedCapabilities.cpp +8 -6
- package/worker/src/RTC/SCTP/association/PacketSender.cpp +7 -2
- package/worker/src/RTC/SCTP/association/StateCookie.cpp +8 -8
- package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +512 -0
- package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +45 -39
- package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +1 -1
- package/worker/src/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.cpp +1 -1
- package/worker/src/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.cpp +22 -5
- package/worker/src/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.cpp +22 -5
- package/worker/src/RTC/SCTP/tx/RetransmissionErrorCounter.cpp +1 -1
- package/worker/src/RTC/SctpAssociation.cpp +1 -2
- package/worker/src/RTC/SeqManager.cpp +4 -4
- package/worker/src/RTC/Transport.cpp +247 -134
- package/worker/src/RTC/WebRtcTransport.cpp +9 -5
- package/worker/src/Settings.cpp +21 -1
- package/worker/src/Worker.cpp +13 -10
- package/worker/src/lib.cpp +11 -8
- package/worker/tasks.py +2 -35
- package/worker/test/src/RTC/SCTP/association/TestNegotiatedCapabilities.cpp +13 -12
- package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +20 -20
- package/worker/test/src/RTC/SCTP/common/TestUnwrappedSequenceNumber.cpp +210 -0
- package/worker/test/src/RTC/SCTP/packet/chunks/TestAbortAssociationChunk.cpp +2 -2
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatAckChunk.cpp +9 -4
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatRequestChunk.cpp +5 -0
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +5 -5
- package/worker/test/src/RTC/SCTP/packet/chunks/TestReConfigChunk.cpp +19 -20
- package/worker/test/src/RTC/SCTP/packet/chunks/TestUnknownChunk.cpp +3 -0
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnknownErrorCause.cpp +3 -0
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIncomingSsnResetRequestParameter.cpp +24 -27
- package/worker/test/src/RTC/SCTP/packet/parameters/TestOutgoingSsnResetRequestParameter.cpp +25 -30
- package/worker/test/src/RTC/SCTP/packet/parameters/TestStateCookieParameter.cpp +8 -6
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedExtensionsParameter.cpp +12 -0
- package/worker/test/src/RTC/SCTP/packet/parameters/TestZeroChecksumAcceptableParameter.cpp +5 -8
- package/worker/test/src/Utils/TestNumber.cpp +119 -49
- package/worker/test/src/tests.cpp +11 -8
|
@@ -61,7 +61,7 @@ SCENARIO("SCTP Init Acknowledgement (2)", "[serializable][sctp][chunk]")
|
|
|
61
61
|
REQUIRE(chunk->GetNumberOfInboundStreams() == 22136);
|
|
62
62
|
REQUIRE(chunk->GetInitialTsn() == 2882339074);
|
|
63
63
|
|
|
64
|
-
auto* parameter1 =
|
|
64
|
+
const auto* parameter1 =
|
|
65
65
|
reinterpret_cast<const RTC::SCTP::IPv4AddressParameter*>(chunk->GetParameterAt(0));
|
|
66
66
|
|
|
67
67
|
CHECK_SCTP_PARAMETER(
|
|
@@ -72,7 +72,7 @@ SCENARIO("SCTP Init Chunk (1)", "[serializable][sctp][chunk]")
|
|
|
72
72
|
REQUIRE(chunk->GetNumberOfInboundStreams() == 22136);
|
|
73
73
|
REQUIRE(chunk->GetInitialTsn() == 2882339074);
|
|
74
74
|
|
|
75
|
-
auto* parameter1 =
|
|
75
|
+
const auto* parameter1 =
|
|
76
76
|
reinterpret_cast<const RTC::SCTP::IPv4AddressParameter*>(chunk->GetParameterAt(0));
|
|
77
77
|
|
|
78
78
|
CHECK_SCTP_PARAMETER(
|
|
@@ -89,7 +89,7 @@ SCENARIO("SCTP Init Chunk (1)", "[serializable][sctp][chunk]")
|
|
|
89
89
|
REQUIRE(parameter1->GetIPv4Address()[2] == 0x04);
|
|
90
90
|
REQUIRE(parameter1->GetIPv4Address()[3] == 0x05);
|
|
91
91
|
|
|
92
|
-
auto* parameter2 =
|
|
92
|
+
const auto* parameter2 =
|
|
93
93
|
reinterpret_cast<const RTC::SCTP::IPv6AddressParameter*>(chunk->GetParameterAt(1));
|
|
94
94
|
|
|
95
95
|
CHECK_SCTP_PARAMETER(
|
|
@@ -107,7 +107,7 @@ SCENARIO("SCTP Init Chunk (1)", "[serializable][sctp][chunk]")
|
|
|
107
107
|
REQUIRE(parameter2->GetIPv6Address()[3] == 0xB8);
|
|
108
108
|
REQUIRE(parameter2->GetIPv6Address()[15] == 0x34);
|
|
109
109
|
|
|
110
|
-
auto* parameter3 =
|
|
110
|
+
const auto* parameter3 =
|
|
111
111
|
reinterpret_cast<const RTC::SCTP::CookiePreservativeParameter*>(chunk->GetParameterAt(2));
|
|
112
112
|
|
|
113
113
|
CHECK_SCTP_PARAMETER(
|
|
@@ -517,7 +517,7 @@ SCENARIO("SCTP Init Chunk (1)", "[serializable][sctp][chunk]")
|
|
|
517
517
|
/*canHaveErrorCauses*/ false,
|
|
518
518
|
/*errorCausesCount*/ 0);
|
|
519
519
|
|
|
520
|
-
auto* obtainedParameter1 =
|
|
520
|
+
const auto* obtainedParameter1 =
|
|
521
521
|
reinterpret_cast<const RTC::SCTP::CookiePreservativeParameter*>(chunk->GetParameterAt(0));
|
|
522
522
|
|
|
523
523
|
CHECK_SCTP_PARAMETER(
|
|
@@ -565,7 +565,7 @@ SCENARIO("SCTP Init Chunk (1)", "[serializable][sctp][chunk]")
|
|
|
565
565
|
/*canHaveErrorCauses*/ false,
|
|
566
566
|
/*errorCausesCount*/ 0);
|
|
567
567
|
|
|
568
|
-
auto* obtainedParameter2 =
|
|
568
|
+
const auto* obtainedParameter2 =
|
|
569
569
|
reinterpret_cast<const RTC::SCTP::SupportedAddressTypesParameter*>(chunk->GetParameterAt(1));
|
|
570
570
|
|
|
571
571
|
CHECK_SCTP_PARAMETER(
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#include "RTC/SCTP/sctpCommon.hpp"
|
|
10
10
|
#include <catch2/catch_test_macros.hpp>
|
|
11
11
|
#include <cstring> // std::memset()
|
|
12
|
+
#include <vector>
|
|
12
13
|
|
|
13
14
|
SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
14
15
|
{
|
|
@@ -62,7 +63,7 @@ SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
|
62
63
|
/*canHaveErrorCauses*/ false,
|
|
63
64
|
/*errorCausesCount*/ 0);
|
|
64
65
|
|
|
65
|
-
auto* parameter1 =
|
|
66
|
+
const auto* parameter1 =
|
|
66
67
|
reinterpret_cast<const RTC::SCTP::OutgoingSsnResetRequestParameter*>(chunk->GetParameterAt(0));
|
|
67
68
|
|
|
68
69
|
CHECK_SCTP_PARAMETER(
|
|
@@ -77,12 +78,14 @@ SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
|
77
78
|
REQUIRE(parameter1->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
78
79
|
REQUIRE(parameter1->GetReconfigurationResponseSequenceNumber() == 0x55667788);
|
|
79
80
|
REQUIRE(parameter1->GetSenderLastAssignedTsn() == 0xAABBCCDD);
|
|
80
|
-
REQUIRE(parameter1->GetNumberOfStreams() == 3);
|
|
81
|
-
REQUIRE(parameter1->GetStreamAt(0) == 0x5001);
|
|
82
|
-
REQUIRE(parameter1->GetStreamAt(1) == 0x5002);
|
|
83
|
-
REQUIRE(parameter1->GetStreamAt(2) == 0x5003);
|
|
84
81
|
|
|
85
|
-
|
|
82
|
+
const std::vector<uint16_t> expectedStreamIds1{
|
|
83
|
+
{ 0x5001, 0x5002, 0x5003 },
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
REQUIRE(parameter1->GetStreamIds() == expectedStreamIds1);
|
|
87
|
+
|
|
88
|
+
const auto* parameter2 =
|
|
86
89
|
reinterpret_cast<const RTC::SCTP::IncomingSsnResetRequestParameter*>(chunk->GetParameterAt(1));
|
|
87
90
|
|
|
88
91
|
CHECK_SCTP_PARAMETER(
|
|
@@ -96,8 +99,12 @@ SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
|
96
99
|
RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
97
100
|
|
|
98
101
|
REQUIRE(parameter2->GetReconfigurationRequestSequenceNumber() == 0x44332211);
|
|
99
|
-
|
|
100
|
-
|
|
102
|
+
|
|
103
|
+
const std::vector<uint16_t> expectedStreamIds2{
|
|
104
|
+
0x6001,
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
REQUIRE(parameter2->GetStreamIds() == expectedStreamIds2);
|
|
101
108
|
|
|
102
109
|
/* Serialize it. */
|
|
103
110
|
|
|
@@ -134,10 +141,7 @@ SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
|
134
141
|
REQUIRE(parameter1->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
135
142
|
REQUIRE(parameter1->GetReconfigurationResponseSequenceNumber() == 0x55667788);
|
|
136
143
|
REQUIRE(parameter1->GetSenderLastAssignedTsn() == 0xAABBCCDD);
|
|
137
|
-
REQUIRE(parameter1->
|
|
138
|
-
REQUIRE(parameter1->GetStreamAt(0) == 0x5001);
|
|
139
|
-
REQUIRE(parameter1->GetStreamAt(1) == 0x5002);
|
|
140
|
-
REQUIRE(parameter1->GetStreamAt(2) == 0x5003);
|
|
144
|
+
REQUIRE(parameter1->GetStreamIds() == expectedStreamIds1);
|
|
141
145
|
|
|
142
146
|
parameter2 =
|
|
143
147
|
reinterpret_cast<const RTC::SCTP::IncomingSsnResetRequestParameter*>(chunk->GetParameterAt(1));
|
|
@@ -153,8 +157,7 @@ SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
|
153
157
|
RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
154
158
|
|
|
155
159
|
REQUIRE(parameter2->GetReconfigurationRequestSequenceNumber() == 0x44332211);
|
|
156
|
-
REQUIRE(parameter2->
|
|
157
|
-
REQUIRE(parameter2->GetStreamAt(0) == 0x6001);
|
|
160
|
+
REQUIRE(parameter2->GetStreamIds() == expectedStreamIds2);
|
|
158
161
|
|
|
159
162
|
/* Clone it. */
|
|
160
163
|
|
|
@@ -193,10 +196,7 @@ SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
|
193
196
|
REQUIRE(parameter1->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
194
197
|
REQUIRE(parameter1->GetReconfigurationResponseSequenceNumber() == 0x55667788);
|
|
195
198
|
REQUIRE(parameter1->GetSenderLastAssignedTsn() == 0xAABBCCDD);
|
|
196
|
-
REQUIRE(parameter1->
|
|
197
|
-
REQUIRE(parameter1->GetStreamAt(0) == 0x5001);
|
|
198
|
-
REQUIRE(parameter1->GetStreamAt(1) == 0x5002);
|
|
199
|
-
REQUIRE(parameter1->GetStreamAt(2) == 0x5003);
|
|
199
|
+
REQUIRE(parameter1->GetStreamIds() == expectedStreamIds1);
|
|
200
200
|
|
|
201
201
|
parameter2 = reinterpret_cast<const RTC::SCTP::IncomingSsnResetRequestParameter*>(
|
|
202
202
|
clonedChunk->GetParameterAt(1));
|
|
@@ -212,8 +212,7 @@ SCENARIO("SCTP Re-Config Chunk (130)", "[serializable][sctp][chunk]")
|
|
|
212
212
|
RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
213
213
|
|
|
214
214
|
REQUIRE(parameter2->GetReconfigurationRequestSequenceNumber() == 0x44332211);
|
|
215
|
-
REQUIRE(parameter2->
|
|
216
|
-
REQUIRE(parameter2->GetStreamAt(0) == 0x6001);
|
|
215
|
+
REQUIRE(parameter2->GetStreamIds() == expectedStreamIds2);
|
|
217
216
|
|
|
218
217
|
delete clonedChunk;
|
|
219
218
|
}
|
|
@@ -33,6 +33,7 @@ SCENARIO("SCTP Unknown Chunk", "[serializable][sctp][chunk]")
|
|
|
33
33
|
/*buffer*/ buffer,
|
|
34
34
|
/*bufferLength*/ sizeof(buffer),
|
|
35
35
|
/*length*/ 8,
|
|
36
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
36
37
|
/*chunkType*/ static_cast<RTC::SCTP::Chunk::ChunkType>(0xEE),
|
|
37
38
|
/*unknownType*/ true,
|
|
38
39
|
/*actionForUnknownChunkType*/ RTC::SCTP::Chunk::ActionForUnknownChunkType::SKIP_AND_REPORT,
|
|
@@ -59,6 +60,7 @@ SCENARIO("SCTP Unknown Chunk", "[serializable][sctp][chunk]")
|
|
|
59
60
|
/*buffer*/ sctpCommon::SerializeBuffer,
|
|
60
61
|
/*bufferLength*/ sizeof(sctpCommon::SerializeBuffer),
|
|
61
62
|
/*length*/ 8,
|
|
63
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
62
64
|
/*chunkType*/ static_cast<RTC::SCTP::Chunk::ChunkType>(0xEE),
|
|
63
65
|
/*unknownType*/ true,
|
|
64
66
|
/*actionForUnknownChunkType*/ RTC::SCTP::Chunk::ActionForUnknownChunkType::SKIP_AND_REPORT,
|
|
@@ -87,6 +89,7 @@ SCENARIO("SCTP Unknown Chunk", "[serializable][sctp][chunk]")
|
|
|
87
89
|
/*buffer*/ sctpCommon::CloneBuffer,
|
|
88
90
|
/*bufferLength*/ sizeof(sctpCommon::CloneBuffer),
|
|
89
91
|
/*length*/ 8,
|
|
92
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
90
93
|
/*chunkType*/ static_cast<RTC::SCTP::Chunk::ChunkType>(0xEE),
|
|
91
94
|
/*unknownType*/ true,
|
|
92
95
|
/*actionForUnknownChunkType*/ RTC::SCTP::Chunk::ActionForUnknownChunkType::SKIP_AND_REPORT,
|
|
@@ -33,6 +33,7 @@ SCENARIO("Unknown Error Cause", "[serializable][sctp][errorcause]")
|
|
|
33
33
|
/*buffer*/ buffer,
|
|
34
34
|
/*bufferLength*/ sizeof(buffer),
|
|
35
35
|
/*length*/ 12,
|
|
36
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
36
37
|
/*causeCode*/ static_cast<RTC::SCTP::ErrorCause::ErrorCauseCode>(999),
|
|
37
38
|
/*unknownCode*/ true);
|
|
38
39
|
|
|
@@ -60,6 +61,7 @@ SCENARIO("Unknown Error Cause", "[serializable][sctp][errorcause]")
|
|
|
60
61
|
/*buffer*/ sctpCommon::SerializeBuffer,
|
|
61
62
|
/*bufferLength*/ sizeof(sctpCommon::SerializeBuffer),
|
|
62
63
|
/*length*/ 12,
|
|
64
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
63
65
|
/*causeCode*/ static_cast<RTC::SCTP::ErrorCause::ErrorCauseCode>(999),
|
|
64
66
|
/*unknownCode*/ true);
|
|
65
67
|
|
|
@@ -90,6 +92,7 @@ SCENARIO("Unknown Error Cause", "[serializable][sctp][errorcause]")
|
|
|
90
92
|
/*buffer*/ sctpCommon::CloneBuffer,
|
|
91
93
|
/*bufferLength*/ sizeof(sctpCommon::CloneBuffer),
|
|
92
94
|
/*length*/ 12,
|
|
95
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
93
96
|
/*causeCode*/ static_cast<RTC::SCTP::ErrorCause::ErrorCauseCode>(999),
|
|
94
97
|
/*unknownCode*/ true);
|
|
95
98
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include "RTC/SCTP/sctpCommon.hpp"
|
|
6
6
|
#include <catch2/catch_test_macros.hpp>
|
|
7
7
|
#include <cstring> // std::memset()
|
|
8
|
+
#include <vector>
|
|
8
9
|
|
|
9
10
|
SCENARIO("Incoming SSN Reset Request Parameter (14)", "[serializable][sctp][parameter]")
|
|
10
11
|
{
|
|
@@ -40,10 +41,12 @@ SCENARIO("Incoming SSN Reset Request Parameter (14)", "[serializable][sctp][para
|
|
|
40
41
|
/*actionForUnknownParameterType*/ RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
41
42
|
|
|
42
43
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
|
|
45
|
+
const std::vector<uint16_t> expectedStreamIds{
|
|
46
|
+
{ 0x5001, 0x5002, 0x5003 },
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
47
50
|
|
|
48
51
|
/* Serialize it. */
|
|
49
52
|
|
|
@@ -61,10 +64,7 @@ SCENARIO("Incoming SSN Reset Request Parameter (14)", "[serializable][sctp][para
|
|
|
61
64
|
/*actionForUnknownParameterType*/ RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
62
65
|
|
|
63
66
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
64
|
-
REQUIRE(parameter->
|
|
65
|
-
REQUIRE(parameter->GetStreamAt(0) == 0x5001);
|
|
66
|
-
REQUIRE(parameter->GetStreamAt(1) == 0x5002);
|
|
67
|
-
REQUIRE(parameter->GetStreamAt(2) == 0x5003);
|
|
67
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
68
68
|
|
|
69
69
|
/* Clone it. */
|
|
70
70
|
|
|
@@ -85,10 +85,7 @@ SCENARIO("Incoming SSN Reset Request Parameter (14)", "[serializable][sctp][para
|
|
|
85
85
|
/*actionForUnknownParameterType*/ RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
86
86
|
|
|
87
87
|
REQUIRE(clonedParameter->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
88
|
-
REQUIRE(clonedParameter->
|
|
89
|
-
REQUIRE(clonedParameter->GetStreamAt(0) == 0x5001);
|
|
90
|
-
REQUIRE(clonedParameter->GetStreamAt(1) == 0x5002);
|
|
91
|
-
REQUIRE(clonedParameter->GetStreamAt(2) == 0x5003);
|
|
88
|
+
REQUIRE(clonedParameter->GetStreamIds() == expectedStreamIds);
|
|
92
89
|
|
|
93
90
|
delete clonedParameter;
|
|
94
91
|
}
|
|
@@ -108,15 +105,18 @@ SCENARIO("Incoming SSN Reset Request Parameter (14)", "[serializable][sctp][para
|
|
|
108
105
|
/*actionForUnknownParameterType*/ RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
109
106
|
|
|
110
107
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 0);
|
|
111
|
-
|
|
108
|
+
|
|
109
|
+
std::vector<uint16_t> expectedStreamIds{};
|
|
110
|
+
|
|
111
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
112
112
|
|
|
113
113
|
/* Modify it. */
|
|
114
114
|
|
|
115
115
|
parameter->SetReconfigurationRequestSequenceNumber(111000);
|
|
116
|
-
parameter->
|
|
117
|
-
parameter->
|
|
118
|
-
parameter->
|
|
119
|
-
parameter->
|
|
116
|
+
parameter->AddStreamId(4444);
|
|
117
|
+
parameter->AddStreamId(4445);
|
|
118
|
+
parameter->AddStreamId(4446);
|
|
119
|
+
parameter->AddStreamId(4447);
|
|
120
120
|
|
|
121
121
|
CHECK_SCTP_PARAMETER(
|
|
122
122
|
/*parameter*/ parameter,
|
|
@@ -128,11 +128,12 @@ SCENARIO("Incoming SSN Reset Request Parameter (14)", "[serializable][sctp][para
|
|
|
128
128
|
/*actionForUnknownParameterType*/ RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
129
129
|
|
|
130
130
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 111000);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
131
|
+
|
|
132
|
+
expectedStreamIds = {
|
|
133
|
+
{ 4444, 4445, 4446, 4447 },
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
136
137
|
|
|
137
138
|
/* Parse itself and compare. */
|
|
138
139
|
|
|
@@ -151,11 +152,7 @@ SCENARIO("Incoming SSN Reset Request Parameter (14)", "[serializable][sctp][para
|
|
|
151
152
|
/*actionForUnknownParameterType*/ RTC::SCTP::Parameter::ActionForUnknownParameterType::STOP);
|
|
152
153
|
|
|
153
154
|
REQUIRE(parsedParameter->GetReconfigurationRequestSequenceNumber() == 111000);
|
|
154
|
-
REQUIRE(parsedParameter->
|
|
155
|
-
REQUIRE(parsedParameter->GetStreamAt(0) == 4444);
|
|
156
|
-
REQUIRE(parsedParameter->GetStreamAt(1) == 4445);
|
|
157
|
-
REQUIRE(parsedParameter->GetStreamAt(2) == 4446);
|
|
158
|
-
REQUIRE(parsedParameter->GetStreamAt(3) == 4447);
|
|
155
|
+
REQUIRE(parsedParameter->GetStreamIds() == expectedStreamIds);
|
|
159
156
|
|
|
160
157
|
delete parsedParameter;
|
|
161
158
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include "RTC/SCTP/sctpCommon.hpp"
|
|
6
6
|
#include <catch2/catch_test_macros.hpp>
|
|
7
7
|
#include <cstring> // std::memset()
|
|
8
|
+
#include <vector>
|
|
8
9
|
|
|
9
10
|
SCENARIO("Outgoing SSN Reset Request Parameter (13)", "[serializable][sctp][parameter]")
|
|
10
11
|
{
|
|
@@ -46,10 +47,12 @@ SCENARIO("Outgoing SSN Reset Request Parameter (13)", "[serializable][sctp][para
|
|
|
46
47
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
47
48
|
REQUIRE(parameter->GetReconfigurationResponseSequenceNumber() == 0x55667788);
|
|
48
49
|
REQUIRE(parameter->GetSenderLastAssignedTsn() == 0xAABBCCDD);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
|
|
51
|
+
const std::vector<uint16_t> expectedStreamIds{
|
|
52
|
+
{ 0x5001, 0x5002, 0x5003 },
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
53
56
|
|
|
54
57
|
/* Serialize it. */
|
|
55
58
|
|
|
@@ -69,10 +72,7 @@ SCENARIO("Outgoing SSN Reset Request Parameter (13)", "[serializable][sctp][para
|
|
|
69
72
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
70
73
|
REQUIRE(parameter->GetReconfigurationResponseSequenceNumber() == 0x55667788);
|
|
71
74
|
REQUIRE(parameter->GetSenderLastAssignedTsn() == 0xAABBCCDD);
|
|
72
|
-
REQUIRE(parameter->
|
|
73
|
-
REQUIRE(parameter->GetStreamAt(0) == 0x5001);
|
|
74
|
-
REQUIRE(parameter->GetStreamAt(1) == 0x5002);
|
|
75
|
-
REQUIRE(parameter->GetStreamAt(2) == 0x5003);
|
|
75
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
76
76
|
|
|
77
77
|
/* Clone it. */
|
|
78
78
|
|
|
@@ -95,10 +95,7 @@ SCENARIO("Outgoing SSN Reset Request Parameter (13)", "[serializable][sctp][para
|
|
|
95
95
|
REQUIRE(clonedParameter->GetReconfigurationRequestSequenceNumber() == 0x11223344);
|
|
96
96
|
REQUIRE(clonedParameter->GetReconfigurationResponseSequenceNumber() == 0x55667788);
|
|
97
97
|
REQUIRE(clonedParameter->GetSenderLastAssignedTsn() == 0xAABBCCDD);
|
|
98
|
-
REQUIRE(clonedParameter->
|
|
99
|
-
REQUIRE(clonedParameter->GetStreamAt(0) == 0x5001);
|
|
100
|
-
REQUIRE(clonedParameter->GetStreamAt(1) == 0x5002);
|
|
101
|
-
REQUIRE(clonedParameter->GetStreamAt(2) == 0x5003);
|
|
98
|
+
REQUIRE(clonedParameter->GetStreamIds() == expectedStreamIds);
|
|
102
99
|
|
|
103
100
|
delete clonedParameter;
|
|
104
101
|
}
|
|
@@ -120,18 +117,21 @@ SCENARIO("Outgoing SSN Reset Request Parameter (13)", "[serializable][sctp][para
|
|
|
120
117
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 0);
|
|
121
118
|
REQUIRE(parameter->GetReconfigurationResponseSequenceNumber() == 0);
|
|
122
119
|
REQUIRE(parameter->GetSenderLastAssignedTsn() == 0);
|
|
123
|
-
|
|
120
|
+
|
|
121
|
+
std::vector<uint16_t> expectedStreamIds{};
|
|
122
|
+
|
|
123
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
124
124
|
|
|
125
125
|
/* Modify it. */
|
|
126
126
|
|
|
127
127
|
parameter->SetReconfigurationRequestSequenceNumber(111000);
|
|
128
128
|
parameter->SetReconfigurationResponseSequenceNumber(222000);
|
|
129
129
|
parameter->SetSenderLastAssignedTsn(333000);
|
|
130
|
-
parameter->
|
|
131
|
-
parameter->
|
|
132
|
-
parameter->
|
|
133
|
-
parameter->
|
|
134
|
-
parameter->
|
|
130
|
+
parameter->AddStreamId(4444);
|
|
131
|
+
parameter->AddStreamId(4445);
|
|
132
|
+
parameter->AddStreamId(4446);
|
|
133
|
+
parameter->AddStreamId(4447);
|
|
134
|
+
parameter->AddStreamId(4448);
|
|
135
135
|
|
|
136
136
|
CHECK_SCTP_PARAMETER(
|
|
137
137
|
/*parameter*/ parameter,
|
|
@@ -145,12 +145,12 @@ SCENARIO("Outgoing SSN Reset Request Parameter (13)", "[serializable][sctp][para
|
|
|
145
145
|
REQUIRE(parameter->GetReconfigurationRequestSequenceNumber() == 111000);
|
|
146
146
|
REQUIRE(parameter->GetReconfigurationResponseSequenceNumber() == 222000);
|
|
147
147
|
REQUIRE(parameter->GetSenderLastAssignedTsn() == 333000);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
REQUIRE(parameter->
|
|
148
|
+
|
|
149
|
+
expectedStreamIds = {
|
|
150
|
+
{ 4444, 4445, 4446, 4447, 4448 },
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
REQUIRE(parameter->GetStreamIds() == expectedStreamIds);
|
|
154
154
|
|
|
155
155
|
/* Parse itself and compare. */
|
|
156
156
|
|
|
@@ -171,12 +171,7 @@ SCENARIO("Outgoing SSN Reset Request Parameter (13)", "[serializable][sctp][para
|
|
|
171
171
|
REQUIRE(parsedParameter->GetReconfigurationRequestSequenceNumber() == 111000);
|
|
172
172
|
REQUIRE(parsedParameter->GetReconfigurationResponseSequenceNumber() == 222000);
|
|
173
173
|
REQUIRE(parsedParameter->GetSenderLastAssignedTsn() == 333000);
|
|
174
|
-
REQUIRE(parsedParameter->
|
|
175
|
-
REQUIRE(parsedParameter->GetStreamAt(0) == 4444);
|
|
176
|
-
REQUIRE(parsedParameter->GetStreamAt(1) == 4445);
|
|
177
|
-
REQUIRE(parsedParameter->GetStreamAt(2) == 4446);
|
|
178
|
-
REQUIRE(parsedParameter->GetStreamAt(3) == 4447);
|
|
179
|
-
REQUIRE(parsedParameter->GetStreamAt(4) == 4448);
|
|
174
|
+
REQUIRE(parsedParameter->GetStreamIds() == expectedStreamIds);
|
|
180
175
|
|
|
181
176
|
delete parsedParameter;
|
|
182
177
|
}
|
|
@@ -183,12 +183,14 @@ SCENARIO("State Cookie Parameter (7)", "[serializable][sctp][parameter]")
|
|
|
183
183
|
/* Modify it. */
|
|
184
184
|
|
|
185
185
|
// Create a StateCookie.
|
|
186
|
-
RTC::SCTP::NegotiatedCapabilities negotiatedCapabilities = {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
186
|
+
const RTC::SCTP::NegotiatedCapabilities negotiatedCapabilities = {
|
|
187
|
+
.negotiatedMaxOutboundStreams = 62000,
|
|
188
|
+
.negotiatedMaxInboundStreams = 55555,
|
|
189
|
+
.partialReliability = true,
|
|
190
|
+
.messageInterleaving = true,
|
|
191
|
+
.reConfig = true,
|
|
192
|
+
.zeroChecksum = false
|
|
193
|
+
};
|
|
192
194
|
|
|
193
195
|
// Build the StateCookie in place within the StateCookieParameter.
|
|
194
196
|
parameter->WriteStateCookieInPlace(
|
|
@@ -40,9 +40,11 @@ SCENARIO("Supported Extensions Parameter (32776)", "[serializable][sctp][paramet
|
|
|
40
40
|
REQUIRE(parameter->GetNumberOfChunkTypes() == 3);
|
|
41
41
|
REQUIRE(parameter->GetChunkTypeAt(0) == RTC::SCTP::Chunk::ChunkType::RE_CONFIG);
|
|
42
42
|
REQUIRE(parameter->GetChunkTypeAt(1) == RTC::SCTP::Chunk::ChunkType::ECNE);
|
|
43
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
43
44
|
REQUIRE(parameter->GetChunkTypeAt(2) == static_cast<RTC::SCTP::Chunk::ChunkType>(0x42));
|
|
44
45
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::RE_CONFIG) == true);
|
|
45
46
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::ECNE) == true);
|
|
47
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
46
48
|
REQUIRE(parameter->IncludesChunkType(static_cast<RTC::SCTP::Chunk::ChunkType>(0x42)) == true);
|
|
47
49
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::I_DATA) == false);
|
|
48
50
|
|
|
@@ -64,9 +66,11 @@ SCENARIO("Supported Extensions Parameter (32776)", "[serializable][sctp][paramet
|
|
|
64
66
|
REQUIRE(parameter->GetNumberOfChunkTypes() == 3);
|
|
65
67
|
REQUIRE(parameter->GetChunkTypeAt(0) == RTC::SCTP::Chunk::ChunkType::RE_CONFIG);
|
|
66
68
|
REQUIRE(parameter->GetChunkTypeAt(1) == RTC::SCTP::Chunk::ChunkType::ECNE);
|
|
69
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
67
70
|
REQUIRE(parameter->GetChunkTypeAt(2) == static_cast<RTC::SCTP::Chunk::ChunkType>(0x42));
|
|
68
71
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::RE_CONFIG) == true);
|
|
69
72
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::ECNE) == true);
|
|
73
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
70
74
|
REQUIRE(parameter->IncludesChunkType(static_cast<RTC::SCTP::Chunk::ChunkType>(0x42)) == true);
|
|
71
75
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::I_DATA) == false);
|
|
72
76
|
|
|
@@ -91,10 +95,12 @@ SCENARIO("Supported Extensions Parameter (32776)", "[serializable][sctp][paramet
|
|
|
91
95
|
REQUIRE(clonedParameter->GetNumberOfChunkTypes() == 3);
|
|
92
96
|
REQUIRE(clonedParameter->GetChunkTypeAt(0) == RTC::SCTP::Chunk::ChunkType::RE_CONFIG);
|
|
93
97
|
REQUIRE(clonedParameter->GetChunkTypeAt(1) == RTC::SCTP::Chunk::ChunkType::ECNE);
|
|
98
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
94
99
|
REQUIRE(clonedParameter->GetChunkTypeAt(2) == static_cast<RTC::SCTP::Chunk::ChunkType>(0x42));
|
|
95
100
|
REQUIRE(clonedParameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::RE_CONFIG) == true);
|
|
96
101
|
REQUIRE(clonedParameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::ECNE) == true);
|
|
97
102
|
REQUIRE(
|
|
103
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
98
104
|
clonedParameter->IncludesChunkType(static_cast<RTC::SCTP::Chunk::ChunkType>(0x42)) == true);
|
|
99
105
|
REQUIRE(clonedParameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::I_DATA) == false);
|
|
100
106
|
|
|
@@ -118,6 +124,7 @@ SCENARIO("Supported Extensions Parameter (32776)", "[serializable][sctp][paramet
|
|
|
118
124
|
REQUIRE(parameter->GetNumberOfChunkTypes() == 0);
|
|
119
125
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::RE_CONFIG) == false);
|
|
120
126
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::ECNE) == false);
|
|
127
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
121
128
|
REQUIRE(parameter->IncludesChunkType(static_cast<RTC::SCTP::Chunk::ChunkType>(0x42)) == false);
|
|
122
129
|
|
|
123
130
|
/* Modify it. */
|
|
@@ -142,6 +149,7 @@ SCENARIO("Supported Extensions Parameter (32776)", "[serializable][sctp][paramet
|
|
|
142
149
|
|
|
143
150
|
parameter->AddChunkType(RTC::SCTP::Chunk::ChunkType::OPERATION_ERROR);
|
|
144
151
|
parameter->AddChunkType(RTC::SCTP::Chunk::ChunkType::COOKIE_ACK);
|
|
152
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
145
153
|
parameter->AddChunkType(static_cast<RTC::SCTP::Chunk::ChunkType>(99));
|
|
146
154
|
|
|
147
155
|
CHECK_SCTP_PARAMETER(
|
|
@@ -158,11 +166,13 @@ SCENARIO("Supported Extensions Parameter (32776)", "[serializable][sctp][paramet
|
|
|
158
166
|
REQUIRE(parameter->GetChunkTypeAt(1) == RTC::SCTP::Chunk::ChunkType::CWR);
|
|
159
167
|
REQUIRE(parameter->GetChunkTypeAt(2) == RTC::SCTP::Chunk::ChunkType::OPERATION_ERROR);
|
|
160
168
|
REQUIRE(parameter->GetChunkTypeAt(3) == RTC::SCTP::Chunk::ChunkType::COOKIE_ACK);
|
|
169
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
161
170
|
REQUIRE(parameter->GetChunkTypeAt(4) == static_cast<RTC::SCTP::Chunk::ChunkType>(99));
|
|
162
171
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::RE_CONFIG) == true);
|
|
163
172
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::CWR) == true);
|
|
164
173
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::OPERATION_ERROR) == true);
|
|
165
174
|
REQUIRE(parameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::COOKIE_ACK) == true);
|
|
175
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
166
176
|
REQUIRE(parameter->IncludesChunkType(static_cast<RTC::SCTP::Chunk::ChunkType>(99)) == true);
|
|
167
177
|
|
|
168
178
|
/* Parse itself and compare. */
|
|
@@ -186,11 +196,13 @@ SCENARIO("Supported Extensions Parameter (32776)", "[serializable][sctp][paramet
|
|
|
186
196
|
REQUIRE(parsedParameter->GetChunkTypeAt(1) == RTC::SCTP::Chunk::ChunkType::CWR);
|
|
187
197
|
REQUIRE(parsedParameter->GetChunkTypeAt(2) == RTC::SCTP::Chunk::ChunkType::OPERATION_ERROR);
|
|
188
198
|
REQUIRE(parsedParameter->GetChunkTypeAt(3) == RTC::SCTP::Chunk::ChunkType::COOKIE_ACK);
|
|
199
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
189
200
|
REQUIRE(parsedParameter->GetChunkTypeAt(4) == static_cast<RTC::SCTP::Chunk::ChunkType>(99));
|
|
190
201
|
REQUIRE(parsedParameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::RE_CONFIG) == true);
|
|
191
202
|
REQUIRE(parsedParameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::CWR) == true);
|
|
192
203
|
REQUIRE(parsedParameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::OPERATION_ERROR) == true);
|
|
193
204
|
REQUIRE(parsedParameter->IncludesChunkType(RTC::SCTP::Chunk::ChunkType::COOKIE_ACK) == true);
|
|
205
|
+
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
|
|
194
206
|
REQUIRE(parsedParameter->IncludesChunkType(static_cast<RTC::SCTP::Chunk::ChunkType>(99)) == true);
|
|
195
207
|
|
|
196
208
|
delete parsedParameter;
|
|
@@ -17,8 +17,8 @@ SCENARIO("Zero Checksum Acceptable Parameter (32769)", "[serializable][sctp][par
|
|
|
17
17
|
{
|
|
18
18
|
// Type:32769 (ZERO_CHECKSUM_ACCEPTABLE), Length: 8
|
|
19
19
|
0x80, 0x01, 0x00, 0x08,
|
|
20
|
-
// Alternate Error Detection Method (EDMID) :
|
|
21
|
-
|
|
20
|
+
// Alternate Error Detection Method (EDMID) : 0x0001
|
|
21
|
+
0x00, 0x00, 0x00, 0x01,
|
|
22
22
|
// Extra bytes that should be ignored
|
|
23
23
|
0xAA, 0xBB, 0xCC, 0xDD,
|
|
24
24
|
0xAA, 0xBB, 0xCC
|
|
@@ -38,8 +38,7 @@ SCENARIO("Zero Checksum Acceptable Parameter (32769)", "[serializable][sctp][par
|
|
|
38
38
|
|
|
39
39
|
REQUIRE(
|
|
40
40
|
parameter->GetAlternateErrorDetectionMethod() ==
|
|
41
|
-
|
|
42
|
-
666777888));
|
|
41
|
+
RTC::SCTP::ZeroChecksumAcceptableParameter::AlternateErrorDetectionMethod::SCTP_OVER_DTLS);
|
|
43
42
|
|
|
44
43
|
/* Serialize it. */
|
|
45
44
|
|
|
@@ -58,8 +57,7 @@ SCENARIO("Zero Checksum Acceptable Parameter (32769)", "[serializable][sctp][par
|
|
|
58
57
|
|
|
59
58
|
REQUIRE(
|
|
60
59
|
parameter->GetAlternateErrorDetectionMethod() ==
|
|
61
|
-
|
|
62
|
-
666777888));
|
|
60
|
+
RTC::SCTP::ZeroChecksumAcceptableParameter::AlternateErrorDetectionMethod::SCTP_OVER_DTLS);
|
|
63
61
|
|
|
64
62
|
/* Clone it. */
|
|
65
63
|
|
|
@@ -81,8 +79,7 @@ SCENARIO("Zero Checksum Acceptable Parameter (32769)", "[serializable][sctp][par
|
|
|
81
79
|
|
|
82
80
|
REQUIRE(
|
|
83
81
|
clonedParameter->GetAlternateErrorDetectionMethod() ==
|
|
84
|
-
|
|
85
|
-
666777888));
|
|
82
|
+
RTC::SCTP::ZeroChecksumAcceptableParameter::AlternateErrorDetectionMethod::SCTP_OVER_DTLS);
|
|
86
83
|
|
|
87
84
|
delete clonedParameter;
|
|
88
85
|
}
|