In SCTP, sending ACKs at the right time is presumably important in order not to cause unnecessary retransmissions. This CL sets the ACK timers to use high timer precision. This unblocks experimentally lowering the precision of the default, "low", timers in WebRTC. // All bots are green, but mac_chromium_compile is randomly timing out // independently of this CL and has been doing so for several days... NOTRY=True Bug: webrtc:13604 Change-Id: I1c81e3d0eeb477c3e00277d35649114c5edd249c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249090 Reviewed-by: Victor Boivie <boivie@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35813}
276 lines
7.2 KiB
Plaintext
276 lines
7.2 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_source_set("context") {
|
|
sources = [ "context.h" ]
|
|
deps = [
|
|
"../common:internal_types",
|
|
"../packet:sctp_packet",
|
|
"../public:socket",
|
|
"../public:types",
|
|
]
|
|
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
|
}
|
|
|
|
rtc_library("heartbeat_handler") {
|
|
deps = [
|
|
":context",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../packet:bounded_io",
|
|
"../packet:chunk",
|
|
"../packet:parameter",
|
|
"../packet:sctp_packet",
|
|
"../public:socket",
|
|
"../public:types",
|
|
"../timer",
|
|
]
|
|
sources = [
|
|
"heartbeat_handler.cc",
|
|
"heartbeat_handler.h",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/functional:bind_front",
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
rtc_library("stream_reset_handler") {
|
|
deps = [
|
|
":context",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../../../rtc_base/containers:flat_set",
|
|
"../common:internal_types",
|
|
"../common:str_join",
|
|
"../packet:chunk",
|
|
"../packet:parameter",
|
|
"../packet:sctp_packet",
|
|
"../packet:tlv_trait",
|
|
"../public:socket",
|
|
"../public:types",
|
|
"../rx:data_tracker",
|
|
"../rx:reassembly_queue",
|
|
"../timer",
|
|
"../tx:retransmission_queue",
|
|
]
|
|
sources = [
|
|
"stream_reset_handler.cc",
|
|
"stream_reset_handler.h",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/functional:bind_front",
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
rtc_library("packet_sender") {
|
|
deps = [
|
|
"../packet:sctp_packet",
|
|
"../public:socket",
|
|
"../public:types",
|
|
"../timer",
|
|
]
|
|
sources = [
|
|
"packet_sender.cc",
|
|
"packet_sender.h",
|
|
]
|
|
absl_deps = []
|
|
}
|
|
|
|
rtc_library("transmission_control_block") {
|
|
deps = [
|
|
":context",
|
|
":heartbeat_handler",
|
|
":packet_sender",
|
|
":stream_reset_handler",
|
|
"../../../api:array_view",
|
|
"../../../api/task_queue:task_queue",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../common:sequence_numbers",
|
|
"../packet:chunk",
|
|
"../packet:sctp_packet",
|
|
"../public:socket",
|
|
"../public:types",
|
|
"../rx:data_tracker",
|
|
"../rx:reassembly_queue",
|
|
"../timer",
|
|
"../tx:retransmission_error_counter",
|
|
"../tx:retransmission_queue",
|
|
"../tx:retransmission_timeout",
|
|
"../tx:send_queue",
|
|
]
|
|
sources = [
|
|
"capabilities.h",
|
|
"transmission_control_block.cc",
|
|
"transmission_control_block.h",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/functional:bind_front",
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
rtc_library("dcsctp_socket") {
|
|
deps = [
|
|
":context",
|
|
":heartbeat_handler",
|
|
":packet_sender",
|
|
":stream_reset_handler",
|
|
":transmission_control_block",
|
|
"../../../api:array_view",
|
|
"../../../api:refcountedbase",
|
|
"../../../api:scoped_refptr",
|
|
"../../../api/task_queue:task_queue",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../common:internal_types",
|
|
"../packet:bounded_io",
|
|
"../packet:chunk",
|
|
"../packet:chunk_validators",
|
|
"../packet:data",
|
|
"../packet:error_cause",
|
|
"../packet:parameter",
|
|
"../packet:sctp_packet",
|
|
"../packet:tlv_trait",
|
|
"../public:socket",
|
|
"../public:types",
|
|
"../rx:data_tracker",
|
|
"../rx:reassembly_queue",
|
|
"../timer",
|
|
"../tx:retransmission_error_counter",
|
|
"../tx:retransmission_queue",
|
|
"../tx:retransmission_timeout",
|
|
"../tx:rr_send_queue",
|
|
"../tx:send_queue",
|
|
]
|
|
sources = [
|
|
"callback_deferrer.cc",
|
|
"callback_deferrer.h",
|
|
"dcsctp_socket.cc",
|
|
"dcsctp_socket.h",
|
|
"state_cookie.cc",
|
|
"state_cookie.h",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/functional:bind_front",
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
if (rtc_include_tests) {
|
|
rtc_source_set("mock_callbacks") {
|
|
testonly = true
|
|
sources = [ "mock_dcsctp_socket_callbacks.h" ]
|
|
deps = [
|
|
"../../../api:array_view",
|
|
"../../../api/task_queue:task_queue",
|
|
"../../../rtc_base:logging",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../../../test:test_support",
|
|
"../public:socket",
|
|
"../public:types",
|
|
"../timer",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("mock_context") {
|
|
testonly = true
|
|
sources = [ "mock_context.h" ]
|
|
deps = [
|
|
":context",
|
|
":mock_callbacks",
|
|
"../../../test:test_support",
|
|
"../common:internal_types",
|
|
"../packet:sctp_packet",
|
|
"../public:socket",
|
|
"../public:types",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
rtc_library("dcsctp_socket_unittests") {
|
|
testonly = true
|
|
|
|
deps = [
|
|
":dcsctp_socket",
|
|
":heartbeat_handler",
|
|
":mock_callbacks",
|
|
":mock_context",
|
|
":packet_sender",
|
|
":stream_reset_handler",
|
|
"../../../api:array_view",
|
|
"../../../api:create_network_emulation_manager",
|
|
"../../../api:network_emulation_manager_api",
|
|
"../../../api/task_queue:task_queue",
|
|
"../../../api/units:time_delta",
|
|
"../../../call:simulated_network",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:gunit_helpers",
|
|
"../../../rtc_base:rtc_base",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../../../rtc_base:rtc_base_tests_utils",
|
|
"../../../rtc_base:socket_address",
|
|
"../../../rtc_base/task_utils:to_queued_task",
|
|
"../../../test:test_support",
|
|
"../common:handover_testing",
|
|
"../common:internal_types",
|
|
"../packet:chunk",
|
|
"../packet:error_cause",
|
|
"../packet:parameter",
|
|
"../packet:sctp_packet",
|
|
"../packet:tlv_trait",
|
|
"../public:socket",
|
|
"../public:types",
|
|
"../public:utils",
|
|
"../rx:data_tracker",
|
|
"../rx:reassembly_queue",
|
|
"../testing:data_generator",
|
|
"../testing:testing_macros",
|
|
"../timer",
|
|
"../timer:task_queue_timeout",
|
|
"../tx:mock_send_queue",
|
|
"../tx:retransmission_queue",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/flags:flag",
|
|
"//third_party/abseil-cpp/absl/memory",
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
sources = [
|
|
"dcsctp_socket_network_test.cc",
|
|
"dcsctp_socket_test.cc",
|
|
"heartbeat_handler_test.cc",
|
|
"packet_sender_test.cc",
|
|
"state_cookie_test.cc",
|
|
"stream_reset_handler_test.cc",
|
|
]
|
|
}
|
|
}
|