Add TURN_LOGGING_ID
This patch adds a new (optional) attribute to TURN_ALLOCATE_REQUEST,
TURN_LOGGING_ID (0xFF05).
The attribute is put into the comprehension-optional range
so that a TURN server should ignore it if it doesn't know if.
https://tools.ietf.org/html/rfc5389#section-18.2
The intended usage of this attribute is to correlate client and
backend logs.
Bug: webrtc:10897
Change-Id: I51fdbe15f9025e817cd91ee8e2c3355133212daa
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149829
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28966}
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 0f7970c..9271559 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -809,6 +809,7 @@
absl::optional<bool> use_datagram_transport_for_data_channels;
absl::optional<CryptoOptions> crypto_options;
bool offer_extmap_allow_mixed;
+ std::string turn_logging_id;
};
static_assert(sizeof(stuff_being_tested_for_equality) == sizeof(*this),
"Did you add something to RTCConfiguration and forget to "
@@ -871,7 +872,8 @@
use_datagram_transport_for_data_channels ==
o.use_datagram_transport_for_data_channels &&
crypto_options == o.crypto_options &&
- offer_extmap_allow_mixed == o.offer_extmap_allow_mixed;
+ offer_extmap_allow_mixed == o.offer_extmap_allow_mixed &&
+ turn_logging_id == o.turn_logging_id;
}
bool PeerConnectionInterface::RTCConfiguration::operator!=(
@@ -1023,6 +1025,11 @@
return false;
}
+ // Add the turn logging id to all turn servers
+ for (cricket::RelayServerConfig& turn_server : turn_servers) {
+ turn_server.turn_logging_id = configuration.turn_logging_id;
+ }
+
// The port allocator lives on the network thread and should be initialized
// there.
const auto pa_result =
@@ -3625,6 +3632,7 @@
modified_config.use_datagram_transport = configuration.use_datagram_transport;
modified_config.use_datagram_transport_for_data_channels =
configuration.use_datagram_transport_for_data_channels;
+ modified_config.turn_logging_id = configuration.turn_logging_id;
if (configuration != modified_config) {
LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_MODIFICATION,
"Modifying the configuration in an unsupported way.");
@@ -3651,6 +3659,11 @@
if (parse_error != RTCErrorType::NONE) {
return RTCError(parse_error);
}
+ // Add the turn logging id to all turn servers
+ for (cricket::RelayServerConfig& turn_server : turn_servers) {
+ turn_server.turn_logging_id = configuration.turn_logging_id;
+ }
+
// Note if STUN or TURN servers were supplied.
if (!stun_servers.empty()) {
NoteUsageEvent(UsageEvent::STUN_SERVER_ADDED);