diff --git a/sdk/android/api/org/webrtc/PeerConnection.java b/sdk/android/api/org/webrtc/PeerConnection.java index e1243b93cb..7317573f03 100644 --- a/sdk/android/api/org/webrtc/PeerConnection.java +++ b/sdk/android/api/org/webrtc/PeerConnection.java @@ -558,6 +558,13 @@ public class PeerConnection { */ @Nullable public CryptoOptions cryptoOptions; + /** + * An optional string that if set will be attached to the + * TURN_ALLOCATE_REQUEST which can be used to correlate client + * logs with backend logs + */ + @Nullable public String turnLoggingId; + // TODO(deadbeef): Instead of duplicating the defaults here, we should do // something to pick up the defaults from C++. The Objective-C equivalent // of RTCConfiguration does that. @@ -601,6 +608,7 @@ public class PeerConnection { useMediaTransport = false; useMediaTransportForDataChannels = false; cryptoOptions = null; + turnLoggingId = null; } @CalledByNative("RTCConfiguration") @@ -820,6 +828,12 @@ public class PeerConnection { CryptoOptions getCryptoOptions() { return cryptoOptions; } + + @Nullable + @CalledByNative("RTCConfiguration") + String getTurnLoggingId() { + return turnLoggingId; + } }; private final List localStreams = new ArrayList<>(); diff --git a/sdk/android/src/jni/pc/peer_connection.cc b/sdk/android/src/jni/pc/peer_connection.cc index 45021760cc..c95e576bd8 100644 --- a/sdk/android/src/jni/pc/peer_connection.cc +++ b/sdk/android/src/jni/pc/peer_connection.cc @@ -274,6 +274,12 @@ void JavaToNativeRTCConfiguration( j_rtc_config); rtc_config->crypto_options = JavaToNativeOptionalCryptoOptions(jni, j_crypto_options); + + ScopedJavaLocalRef j_turn_logging_id = + Java_RTCConfiguration_getTurnLoggingId(jni, j_rtc_config); + if (!IsNull(jni, j_turn_logging_id)) { + rtc_config->turn_logging_id = JavaToNativeString(jni, j_turn_logging_id); + } } rtc::KeyType GetRtcConfigKeyType(JNIEnv* env,