The Reassembly Queue receives fragmented messages (DATA or I-DATA chunks) and - with help of stream reassemblers - will reassemble these fragments into messages, which will be delivered to the client. It also handle partial reliability (FORWARD-TSN) and stream resetting. To avoid a DoS attack vector, where a sender can send fragments in a way that the reassembly queue will never succeed to reassemble a message and use all available memory, the ReassemblyQueue has a maximum size. Bug: webrtc:12614 Change-Id: Ibb084fecd240d4c414e096579244f8f5ee46914e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/214043 Commit-Queue: Victor Boivie <boivie@webrtc.org> Reviewed-by: Tommi <tommi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33678}
79 lines
1.9 KiB
Plaintext
79 lines
1.9 KiB
Plaintext
# Copyright (c) 2021 The WebRTC project authors. All Rights Reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file in the root of the source
|
|
# tree. An additional intellectual property rights grant can be found
|
|
# in the file PATENTS. All contributing project authors may
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
|
|
import("../../../webrtc.gni")
|
|
|
|
rtc_library("data_tracker") {
|
|
deps = [
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
]
|
|
sources = [
|
|
"data_tracker.cc",
|
|
"data_tracker.h",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("reassembly_streams") {
|
|
deps = [ "../packet:chunk" ]
|
|
sources = [ "reassembly_streams.h" ]
|
|
}
|
|
|
|
rtc_library("traditional_reassembly_streams") {
|
|
deps = [
|
|
":reassembly_streams",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
]
|
|
sources = [
|
|
"traditional_reassembly_streams.cc",
|
|
"traditional_reassembly_streams.h",
|
|
]
|
|
}
|
|
|
|
rtc_library("reassembly_queue") {
|
|
deps = [
|
|
":traditional_reassembly_streams",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
]
|
|
sources = [
|
|
"reassembly_queue.cc",
|
|
"reassembly_queue.h",
|
|
]
|
|
}
|
|
|
|
if (rtc_include_tests) {
|
|
rtc_library("dcsctp_rx_unittests") {
|
|
testonly = true
|
|
|
|
deps = [
|
|
":data_tracker",
|
|
":reassembly_queue",
|
|
":traditional_reassembly_streams",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:gunit_helpers",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../../../test:test_support",
|
|
"../testing:data_generator",
|
|
]
|
|
sources = [
|
|
"data_tracker_test.cc",
|
|
"reassembly_queue_test.cc",
|
|
"traditional_reassembly_streams_test.cc",
|
|
]
|
|
}
|
|
}
|