Control: tags -1 moreinfo confirmed On 2023-05-05 19:37:56 +0300, Nicholas Guriev wrote: > Package: release.debian.org > Severity: normal > User: [email protected] > Usertags: unblock > Control: block 1032927 by -1 > Control: block 1035518 by -1 > > Please unblock package telegram-desktop as well as libtgowt, an ancillary VoIP > library for Telegram. > > [ Reason ] > The updates fix an important issue with group calls and live streams. See > detailed description in Bug#1032927, Bug#1035518, and in an upstream bug > report. > > [ Impact ] > The features do not work without updating libSRTP from the libsrtp2-1 package. > > [ Tests ] > A manual test. See the test case in Bug#1035518. > > [ Risks ] > Almost none. Telegram Desktop is leaf package, libtgowt has only one > dependant. > > [ Checklist ] > [x] all changes are documented in the d/changelog > [x] I reviewed all changes and I approve them > [x] attach debdiff against the packages in testing > > [ Other info ] > The libtgowt package carries a static library and needs to be build before > telegram-desktop, or the update will not have effect. > > unblock telegram-desktop/4.6.5+ds-2 > unblock libtgowt/0~git20230105.5098730+dfsg-2
Please go ahead with the uploads. risc64 is not a release architecture though, so I'd appreciate if adding that patch could be postponed to trixie. Remove the moreinfo tag once the packages are available in unstable. Cheers > diffstat for telegram-desktop-4.6.5+ds telegram-desktop-4.6.5+ds > > changelog | 9 > patches/Always-use-std-to_string-to-serialize-ints.patch | 232 > +++++++++++++++ > patches/series | 1 > 3 files changed, 242 insertions(+) > > diff -Nru telegram-desktop-4.6.5+ds/debian/changelog > telegram-desktop-4.6.5+ds/debian/changelog > --- telegram-desktop-4.6.5+ds/debian/changelog 2023-02-27 > 17:58:07.000000000 +0300 > +++ telegram-desktop-4.6.5+ds/debian/changelog 2023-05-05 > 12:01:43.000000000 +0300 > @@ -1,3 +1,12 @@ > +telegram-desktop (4.6.5+ds-2) unstable; urgency=medium > + > + * Rebuild against libtgowt-dev (>= 0~git20230105.5098730+dfsg-2). This > + closes: #1032953, #1035518. > + * New Always-use-std-to_string-to-serialize-ints.patch fixes an assert > + violation in video chats (also known as group calls). > + > + -- Nicholas Guriev <[email protected]> Fri, 05 May 2023 12:01:43 +0300 > + > telegram-desktop (4.6.5+ds-1) unstable; urgency=medium > > * New upstream release. > diff -Nru > telegram-desktop-4.6.5+ds/debian/patches/Always-use-std-to_string-to-serialize-ints.patch > > telegram-desktop-4.6.5+ds/debian/patches/Always-use-std-to_string-to-serialize-ints.patch > --- > telegram-desktop-4.6.5+ds/debian/patches/Always-use-std-to_string-to-serialize-ints.patch > 1970-01-01 03:00:00.000000000 +0300 > +++ > telegram-desktop-4.6.5+ds/debian/patches/Always-use-std-to_string-to-serialize-ints.patch > 2023-05-04 12:44:16.000000000 +0300 > @@ -0,0 +1,232 @@ > +Description: Always use std::to_string to serialize ints > +Origin: > https://github.com/TelegramMessenger/tgcalls/commit/fecf542a74b0eb2c15ec7820d16653c57f4db27e > + > https://github.com/TelegramMessenger/tgcalls/commit/012f7a75ba7e20e1790203d02aedf573e3551d2f > +Author: John Preston <[email protected]> > +Acked-By: Nicholas Guriev <[email protected]> > +Last-Update: Thu, 04 May 2023 12:44:16 +0300 > + > +--- a/Telegram/ThirdParty/tgcalls/tgcalls/group/GroupInstanceCustomImpl.cpp > ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/group/GroupInstanceCustomImpl.cpp > +@@ -102,15 +102,11 @@ static int stringToInt(std::string const &string) { > + } > + > + static std::string intToString(int value) { > +- std::ostringstream stringStream; > +- stringStream << value; > +- return stringStream.str(); > ++ return std::to_string(value); > + } > + > + static std::string uint32ToString(uint32_t value) { > +- std::ostringstream stringStream; > +- stringStream << value; > +- return stringStream.str(); > ++ return std::to_string(value); > + } > + > + static uint32_t stringToUInt32(std::string const &string) { > +@@ -129,6 +125,7 @@ static uint16_t stringToUInt16(std::string const > &string) { > + > + static std::string formatTimestampMillis(int64_t timestamp) { > + std::ostringstream stringStream; > ++ stringStream.imbue(std::locale::classic()); > + stringStream << std::fixed << std::setprecision(3) << (double)timestamp > / 1000.0; > + return stringStream.str(); > + } > +--- a/Telegram/ThirdParty/tgcalls/tgcalls/v2/ContentNegotiation.cpp > ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/v2/ContentNegotiation.cpp > +@@ -187,11 +187,7 @@ cricket::ContentInfo > createInactiveContentInfo(std::string const &contentId) { > + } > + > + std::string contentIdBySsrc(uint32_t ssrc) { > +- std::ostringstream contentIdString; > +- > +- contentIdString << ssrc; > +- > +- return contentIdString.str(); > ++ return std::to_string(ssrc); > + } > + > + } > +@@ -639,11 +635,10 @@ void > ContentNegotiationContext::setAnswer(std::unique_ptr<ContentNegotiationCont > + } > + > + std::string ContentNegotiationContext::takeNextOutgoingChannelId() { > +- std::ostringstream result; > +- result << "m" << _nextOutgoingChannelId; > ++ const auto result = "m" + std::to_string(_nextOutgoingChannelId); > + _nextOutgoingChannelId++; > +- > +- return result.str(); > ++ > ++ return result; > + } > + > + std::unique_ptr<ContentNegotiationContext::CoordinatedState> > ContentNegotiationContext::coordinatedState() const { > +--- a/Telegram/ThirdParty/tgcalls/tgcalls/v2/InstanceV2Impl.cpp > ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/v2/InstanceV2Impl.cpp > +@@ -136,13 +136,12 @@ public: > + audioOptions.noise_suppression = true; > + } > + > +- std::ostringstream contentId; > +- contentId << _ssrc; > ++ const auto contentId = std::to_string(_ssrc); > + > + std::vector<std::string> streamIds; > +- streamIds.push_back(contentId.str()); > ++ streamIds.push_back(contentId); > + > +- _outgoingAudioChannel = _channelManager->CreateVoiceChannel(call, > cricket::MediaConfig(), contentId.str(), false, > NativeNetworkingImpl::getDefaulCryptoOptions(), audioOptions); > ++ _outgoingAudioChannel = _channelManager->CreateVoiceChannel(call, > cricket::MediaConfig(), contentId, false, > NativeNetworkingImpl::getDefaulCryptoOptions(), audioOptions); > + _threads->getNetworkThread()->BlockingCall([&]() { > + _outgoingAudioChannel->SetRtpTransport(rtpTransport); > + }); > +@@ -272,12 +271,9 @@ public: > + audioOptions.audio_jitter_buffer_fast_accelerate = true; > + audioOptions.audio_jitter_buffer_min_delay_ms = 50; > + > +- std::ostringstream contentId; > +- contentId << _ssrc; > ++ const auto streamId = std::to_string(_ssrc); > + > +- std::string streamId = contentId.str(); > +- > +- _audioChannel = _channelManager->CreateVoiceChannel(call, > cricket::MediaConfig(), contentId.str(), false, > NativeNetworkingImpl::getDefaulCryptoOptions(), audioOptions); > ++ _audioChannel = _channelManager->CreateVoiceChannel(call, > cricket::MediaConfig(), streamId, false, > NativeNetworkingImpl::getDefaulCryptoOptions(), audioOptions); > + _threads->getNetworkThread()->BlockingCall([&]() { > + _audioChannel->SetRtpTransport(rtpTransport); > + }); > +@@ -401,10 +397,7 @@ public: > + cricket::VideoOptions videoOptions; > + videoOptions.is_screencast = isScreencast; > + > +- std::ostringstream contentId; > +- contentId << mediaContent.ssrc; > +- > +- _outgoingVideoChannel = _channelManager->CreateVideoChannel(call, > cricket::MediaConfig(), contentId.str(), false, > NativeNetworkingImpl::getDefaulCryptoOptions(), videoOptions, > videoBitrateAllocatorFactory); > ++ _outgoingVideoChannel = _channelManager->CreateVideoChannel(call, > cricket::MediaConfig(), std::to_string(mediaContent.ssrc), false, > NativeNetworkingImpl::getDefaulCryptoOptions(), videoOptions, > videoBitrateAllocatorFactory); > + _threads->getNetworkThread()->BlockingCall([&]() { > + _outgoingVideoChannel->SetRtpTransport(rtpTransport); > + }); > +@@ -702,10 +695,9 @@ public: > + > + _videoBitrateAllocatorFactory = > webrtc::CreateBuiltinVideoBitrateAllocatorFactory(); > + > +- std::ostringstream contentId; > +- contentId << mediaContent.ssrc; > ++ const auto contentId = std::to_string(mediaContent.ssrc); > + > +- _videoChannel = _channelManager->CreateVideoChannel(call, > cricket::MediaConfig(), contentId.str(), false, > NativeNetworkingImpl::getDefaulCryptoOptions(), cricket::VideoOptions(), > _videoBitrateAllocatorFactory.get()); > ++ _videoChannel = _channelManager->CreateVideoChannel(call, > cricket::MediaConfig(), contentId, false, > NativeNetworkingImpl::getDefaulCryptoOptions(), cricket::VideoOptions(), > _videoBitrateAllocatorFactory.get()); > + _threads->getNetworkThread()->BlockingCall([&]() { > + _videoChannel->SetRtpTransport(rtpTransport); > + }); > +@@ -750,7 +742,7 @@ public: > + videoRecvStreamParams.ssrcs = allSsrcs; > + > + videoRecvStreamParams.cname = "cname"; > +- videoRecvStreamParams.set_stream_ids({ contentId.str() }); > ++ videoRecvStreamParams.set_stream_ids({ contentId }); > + > + auto incomingVideoDescription = > std::make_unique<cricket::VideoContentDescription>(); > + for (const auto &rtpExtension : mediaContent.rtpExtensions) { > +@@ -1978,14 +1970,10 @@ public: > + for (const auto &record : _networkStateLogRecords) { > + json11::Json::object jsonRecord; > + > +- std::ostringstream timestampString; > +- > + if (baseTimestamp == 0) { > + baseTimestamp = record.timestamp; > + } > +- timestampString << (record.timestamp - baseTimestamp); > +- > +- jsonRecord.insert(std::make_pair("t", > json11::Json(timestampString.str()))); > ++ jsonRecord.insert(std::make_pair("t", > json11::Json(std::to_string(record.timestamp - baseTimestamp)))); > + jsonRecord.insert(std::make_pair("c", > json11::Json(record.record.isConnected ? 1 : 0))); > + if (record.record.route) { > + jsonRecord.insert(std::make_pair("local", > json11::Json(record.record.route->localDescription))); > +--- a/Telegram/ThirdParty/tgcalls/tgcalls/v2/InstanceV2ReferenceImpl.cpp > ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/v2/InstanceV2ReferenceImpl.cpp > +@@ -653,10 +653,8 @@ public: > + if (server.isTurn) { > + webrtc::PeerConnectionInterface::IceServer mappedServer; > + > +- std::ostringstream uri; > +- uri << "turn:" << address.HostAsURIString() << ":" << > server.port; > +- > +- mappedServer.urls.push_back(uri.str()); > ++ mappedServer.urls.push_back( > ++ "turn:" + address.HostAsURIString() + ":" + > std::to_string(server.port)); > + mappedServer.username = server.login; > + mappedServer.password = server.password; > + > +@@ -664,10 +662,8 @@ public: > + } else { > + webrtc::PeerConnectionInterface::IceServer mappedServer; > + > +- std::ostringstream uri; > +- uri << "stun:" << address.HostAsURIString() << ":" << > server.port; > +- > +- mappedServer.urls.push_back(uri.str()); > ++ mappedServer.urls.push_back( > ++ "stun:" + address.HostAsURIString() + ":" + > std::to_string(server.port)); > + > + peerConnectionConfiguration.servers.push_back(mappedServer); > + } > +@@ -1455,14 +1451,10 @@ public: > + for (const auto &record : _networkStateLogRecords) { > + json11::Json::object jsonRecord; > + > +- std::ostringstream timestampString; > +- > + if (baseTimestamp == 0) { > + baseTimestamp = record.timestamp; > + } > +- timestampString << (record.timestamp - baseTimestamp); > +- > +- jsonRecord.insert(std::make_pair("t", > json11::Json(timestampString.str()))); > ++ jsonRecord.insert(std::make_pair("t", > json11::Json(std::to_string(record.timestamp - baseTimestamp)))); > + jsonRecord.insert(std::make_pair("c", > json11::Json(record.record.isConnected ? 1 : 0))); > + if (record.record.route) { > + jsonRecord.insert(std::make_pair("local", > json11::Json(record.record.route->localDescription))); > +--- a/Telegram/ThirdParty/tgcalls/tgcalls/v2/Signaling.cpp > ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/v2/Signaling.cpp > +@@ -11,9 +11,7 @@ namespace tgcalls { > + namespace signaling { > + > + static std::string uint32ToString(uint32_t value) { > +- std::ostringstream stringStream; > +- stringStream << value; > +- return stringStream.str(); > ++ return std::to_string(value); > + } > + > + static uint32_t stringToUInt32(std::string const &string) { > +--- a/Telegram/ThirdParty/tgcalls/tgcalls/v2_4_0_0/InstanceV2_4_0_0Impl.cpp > ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/v2_4_0_0/InstanceV2_4_0_0Impl.cpp > +@@ -57,9 +57,7 @@ namespace tgcalls { > + namespace { > + > + static std::string intToString(int value) { > +- std::ostringstream stringStream; > +- stringStream << value; > +- return stringStream.str(); > ++ return std::to_string(value); > + } > + > + static VideoCaptureInterfaceObject > *GetVideoCaptureAssumingSameThread(VideoCaptureInterface *videoCapture) { > +--- a/Telegram/ThirdParty/tgcalls/tgcalls/v2_4_0_0/Signaling_4_0_0.cpp > ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/v2_4_0_0/Signaling_4_0_0.cpp > +@@ -10,9 +10,7 @@ namespace tgcalls { > + namespace signaling_4_0_0 { > + > + static std::string uint32ToString(uint32_t value) { > +- std::ostringstream stringStream; > +- stringStream << value; > +- return stringStream.str(); > ++ return std::to_string(value); > + } > + > + static uint32_t stringToUInt32(std::string const &string) { > diff -Nru telegram-desktop-4.6.5+ds/debian/patches/series > telegram-desktop-4.6.5+ds/debian/patches/series > --- telegram-desktop-4.6.5+ds/debian/patches/series 2023-02-27 > 10:59:16.000000000 +0300 > +++ telegram-desktop-4.6.5+ds/debian/patches/series 2023-05-04 > 12:44:16.000000000 +0300 > @@ -13,3 +13,4 @@ > Backport-GLib.patch > Backport-KCoreAddons.patch > Backport-Wayland-protocols.patch > +Always-use-std-to_string-to-serialize-ints.patch > diffstat for libtgowt-0~git20230105.5098730+dfsg > libtgowt-0~git20230105.5098730+dfsg > > changelog | 9 ++ > control | 1 > patches/Ignore-sanitize-attr.patch | 44 +++++++++++++ > patches/Unbundle-libSRTP.patch | 124 > +++++++++++++++++++++++++++++++++++++ > patches/series | 2 > 5 files changed, 180 insertions(+) > > diff -Nru libtgowt-0~git20230105.5098730+dfsg/debian/changelog > libtgowt-0~git20230105.5098730+dfsg/debian/changelog > --- libtgowt-0~git20230105.5098730+dfsg/debian/changelog 2023-01-10 > 23:20:23.000000000 +0300 > +++ libtgowt-0~git20230105.5098730+dfsg/debian/changelog 2023-05-05 > 11:54:32.000000000 +0300 > @@ -1,3 +1,12 @@ > +libtgowt (0~git20230105.5098730+dfsg-2) unstable; urgency=medium > + > + * New Unbundle-libSRTP.patch. > + - Link against the updated library from the libsrtp2-dev package which > + already has a fix of OpenSSL 3.0.0 incompatibility. > + * Bring back Ignore-sanitize-attr.patch to fix build for RISC-V 64bit. > + > + -- Nicholas Guriev <[email protected]> Fri, 05 May 2023 11:54:32 +0300 > + > libtgowt (0~git20230105.5098730+dfsg-1) unstable; urgency=medium > > * Update to the latest upstream commit. > diff -Nru libtgowt-0~git20230105.5098730+dfsg/debian/control > libtgowt-0~git20230105.5098730+dfsg/debian/control > --- libtgowt-0~git20230105.5098730+dfsg/debian/control 2023-01-10 > 22:45:35.000000000 +0300 > +++ libtgowt-0~git20230105.5098730+dfsg/debian/control 2023-05-04 > 16:21:09.000000000 +0300 > @@ -20,6 +20,7 @@ > libpipewire-0.3-dev, > libprotobuf-dev, > libpulse-dev, > + libsrtp2-dev, > libssl-dev, > libswresample-dev, > libswscale-dev, > diff -Nru > libtgowt-0~git20230105.5098730+dfsg/debian/patches/Ignore-sanitize-attr.patch > libtgowt-0~git20230105.5098730+dfsg/debian/patches/Ignore-sanitize-attr.patch > --- > libtgowt-0~git20230105.5098730+dfsg/debian/patches/Ignore-sanitize-attr.patch > 1970-01-01 03:00:00.000000000 +0300 > +++ > libtgowt-0~git20230105.5098730+dfsg/debian/patches/Ignore-sanitize-attr.patch > 2023-05-04 20:11:56.000000000 +0300 > @@ -0,0 +1,44 @@ > +Description: Do not put the no_sanitize attribute near generated > declarations. > + -fsanitize=cfi-icall is supported only by Clang for x86 and x86_64. That is > not > + our case. Exclude compiler_specific.h that requires hard-coded > build_config.h. > + . > + This way we avoid the header blocking the build on RISC-V 64bit and other > + platforms. > +Author: Nicholas Guriev <[email protected]> > +Last-Update: Thu, 04 May 2023 20:11:56 +0300 > + > +--- a/src/tools/generate_stubs/generate_stubs.py > ++++ b/src/tools/generate_stubs/generate_stubs.py > +@@ -92,7 +92,6 @@ > + # arg_list: The arguments used to call the stub function. > + STUB_FUNCTION_DEFINITION = ( > + """extern %(return_type)s %(name)s(%(params)s) __attribute__((weak)); > +-DISABLE_CFI_ICALL > + %(return_type)s %(export)s %(name)s(%(params)s) { > + %(return_prefix)s%(name)s_ptr(%(arg_list)s); > + }""") > +@@ -111,7 +110,6 @@ > + # argument. > + VARIADIC_STUB_FUNCTION_DEFINITION = ( > + """extern %(return_type)s %(name)s(%(params)s) __attribute__((weak)); > +-DISABLE_CFI_ICALL > + %(return_type)s %(export)s %(name)s(%(params)s) { > + va_list args___; > + va_start(args___, %(last_named_arg)s); > +@@ -133,7 +131,6 @@ > + # argument. > + VOID_VARIADIC_STUB_FUNCTION_DEFINITION = ( > + """extern void %(name)s(%(params)s) __attribute__((weak)); > +-DISABLE_CFI_ICALL > + void %(export)s %(name)s(%(params)s) { > + va_list args___; > + va_start(args___, %(last_named_arg)s); > +@@ -182,8 +179,6 @@ > + > + #include <map> > + #include <vector> > +- > +-#include "base/compiler_specific.h" > + """ > + > + # The start and end templates for the enum definitions used by the Umbrella > diff -Nru libtgowt-0~git20230105.5098730+dfsg/debian/patches/series > libtgowt-0~git20230105.5098730+dfsg/debian/patches/series > --- libtgowt-0~git20230105.5098730+dfsg/debian/patches/series 2023-01-10 > 22:51:02.000000000 +0300 > +++ libtgowt-0~git20230105.5098730+dfsg/debian/patches/series 2023-05-04 > 20:11:56.000000000 +0300 > @@ -1,6 +1,8 @@ > Better-denormal-check.patch > Convert-endianness.patch > Fix-libabsl-include.patch > +Ignore-sanitize-attr.patch > Packaged-PipeWire.patch > Skip-RNNoise.patch > +Unbundle-libSRTP.patch > Backport-to-stable-libvpx.patch > diff -Nru > libtgowt-0~git20230105.5098730+dfsg/debian/patches/Unbundle-libSRTP.patch > libtgowt-0~git20230105.5098730+dfsg/debian/patches/Unbundle-libSRTP.patch > --- libtgowt-0~git20230105.5098730+dfsg/debian/patches/Unbundle-libSRTP.patch > 1970-01-01 03:00:00.000000000 +0300 > +++ libtgowt-0~git20230105.5098730+dfsg/debian/patches/Unbundle-libSRTP.patch > 2023-05-04 16:21:09.000000000 +0300 > @@ -0,0 +1,124 @@ > +Description: Avoid private symbols and link against system-wide libSRTP > + The package no longer uses outdated bundled copy of the library. The change > + fixes incompatibility with OpenSSL 3.0.0 or later. > + . > + The excluded code in SrtpSession looks unreachable from the call integration > + in Telegram Desktop. Though, I can't 100% confirm this. > +Author: Nicholas Guriev <[email protected]> > +Forwarded: https://github.com/desktop-app/tg_owt/pull/123 > +Last-Update: Thu, 04 May 2023 16:21:09 +0300 > + > +--- a/CMakeLists.txt > ++++ b/CMakeLists.txt > +@@ -2658,6 +2658,9 @@ if (TG_OWT_USE_PROTOBUF) > + list(APPEND export_targets proto) > + endif() > + > ++if (LIBSRTP_FOUND) > ++ target_compile_definitions(tg_owt PRIVATE HAVE_LIBSRTP) > ++endif() > + if (NOT absl_FOUND) > + include(cmake/libabsl.cmake) > + list(APPEND export_targets libabsl) > +--- a/cmake/libsrtp.cmake > ++++ b/cmake/libsrtp.cmake > +@@ -1,3 +1,16 @@ > ++find_package(PkgConfig REQUIRED) > ++pkg_check_modules(LIBSRTP libsrtp2) > ++ > ++if (LIBSRTP_FOUND) > ++ add_library(libsrtp INTERFACE EXCLUDE_FROM_ALL) > ++ add_library(tg_owt::libsrtp ALIAS libsrtp) > ++ > ++ target_include_directories(libsrtp INTERFACE ${LIBSRTP_INCLUDE_DIRS} > ${LIBSRTP_CFLAGS_OTHER}) > ++ target_link_libraries(libsrtp INTERFACE ${LIBSRTP_LINK_LIBRARIES} > ${LIBSRTP_LDFLAGS_OTHER}) > ++ > ++ return() > ++endif() > ++ > + add_library(libsrtp OBJECT EXCLUDE_FROM_ALL) > + init_target(libsrtp) > + add_library(tg_owt::libsrtp ALIAS libsrtp) > +--- a/src/pc/external_hmac.cc > ++++ b/src/pc/external_hmac.cc > +@@ -15,7 +15,6 @@ > + > + #include "rtc_base/logging.h" > + #include "rtc_base/zero_memory.h" > +-#include "third_party/libsrtp/include/srtp.h" > + > + // Begin test case 0 */ > + static const uint8_t kExternalHmacTestCase0Key[20] = { > +--- a/src/pc/external_hmac.h > ++++ b/src/pc/external_hmac.h > +@@ -30,9 +30,12 @@ > + > + #include <stdint.h> > + > +-#include "third_party/libsrtp/crypto/include/crypto_types.h" > +-#include "third_party/libsrtp/include/srtp.h" > +-#include "third_party/libsrtp/include/srtp_priv.h" > ++#ifdef HAVE_LIBSRTP > ++# include <srtp2/auth.h> > ++# include <srtp2/srtp.h> > ++#else > ++# include "srtp_priv.h" > ++#endif > + > + #define EXTERNAL_HMAC_SHA1 SRTP_HMAC_SHA1 + 1 > + #define HMAC_KEY_LENGTH 20 > +--- a/src/pc/srtp_session.cc > ++++ b/src/pc/srtp_session.cc > +@@ -30,8 +30,12 @@ > + #include "rtc_base/thread_annotations.h" > + #include "rtc_base/time_utils.h" > + #include "system_wrappers/include/metrics.h" > +-#include "third_party/libsrtp/include/srtp.h" > +-#include "third_party/libsrtp/include/srtp_priv.h" > ++ > ++#ifdef HAVE_LIBSRTP > ++# include <srtp2/srtp.h> > ++#else > ++# include "srtp_priv.h" > ++#endif > + > + namespace cricket { > + > +@@ -290,6 +294,7 @@ bool SrtpSession::UnprotectRtcp(void* p, > + bool SrtpSession::GetRtpAuthParams(uint8_t** key, int* key_len, int* > tag_len) { > + RTC_DCHECK(thread_checker_.IsCurrent()); > + RTC_DCHECK(IsExternalAuthActive()); > ++#ifndef HAVE_LIBSRTP > + if (!IsExternalAuthActive()) { > + return false; > + } > +@@ -313,6 +318,10 @@ bool SrtpSession::GetRtpAuthParams(uint8 > + *key_len = external_hmac->key_length; > + *tag_len = rtp_auth_tag_len_; > + return true; > ++#else > ++ RTC_LOG_F(LS_WARNING) << "unavailable"; > ++ return false; > ++#endif > + } > + > + int SrtpSession::GetSrtpOverhead() const { > +@@ -336,6 +345,7 @@ bool SrtpSession::GetSendStreamPacketInd > + int in_len, > + int64_t* index) { > + RTC_DCHECK(thread_checker_.IsCurrent()); > ++#ifndef HAVE_LIBSRTP > + srtp_hdr_t* hdr = reinterpret_cast<srtp_hdr_t*>(p); > + srtp_stream_ctx_t* stream = srtp_get_stream(session_, hdr->ssrc); > + if (!stream) { > +@@ -346,6 +356,10 @@ bool SrtpSession::GetSendStreamPacketInd > + *index = static_cast<int64_t>(rtc::NetworkToHost64( > + srtp_rdbx_get_packet_index(&stream->rtp_rdbx) << 16)); > + return true; > ++#else > ++ RTC_LOG_F(LS_WARNING) << "unavailable"; > ++ return false; > ++#endif > + } > + > + bool SrtpSession::DoSetKey(int type, -- Sebastian Ramacher

