| Index: webrtc/media/engine/webrtcmediaengine.cc
|
| diff --git a/webrtc/media/engine/webrtcmediaengine.cc b/webrtc/media/engine/webrtcmediaengine.cc
|
| index 3c937f21acbc03dc407395934119f41bdbff05c0..38e2625378255985da64c94d7fd7eec62f6733a1 100644
|
| --- a/webrtc/media/engine/webrtcmediaengine.cc
|
| +++ b/webrtc/media/engine/webrtcmediaengine.cc
|
| @@ -199,18 +199,22 @@ std::vector<webrtc::RtpExtension> FilterRtpExtensions(
|
| }
|
| }
|
|
|
| - // Sort by name, ascending, so that we don't reset extensions if they were
|
| - // specified in a different order (also allows us to use std::unique below).
|
| + // Sort by name, ascending (prioritise encryption), so that we don't reset
|
| + // extensions if they were specified in a different order (also allows us
|
| + // to use std::unique below).
|
| std::sort(result.begin(), result.end(),
|
| [](const webrtc::RtpExtension& rhs,
|
| - const webrtc::RtpExtension& lhs) { return rhs.uri < lhs.uri; });
|
| + const webrtc::RtpExtension& lhs) {
|
| + return rhs.encrypt == lhs.encrypt ? rhs.uri < lhs.uri
|
| + : rhs.encrypt > lhs.encrypt;
|
| + });
|
|
|
| // Remove unnecessary extensions (used on send side).
|
| if (filter_redundant_extensions) {
|
| auto it = std::unique(
|
| result.begin(), result.end(),
|
| [](const webrtc::RtpExtension& rhs, const webrtc::RtpExtension& lhs) {
|
| - return rhs.uri == lhs.uri;
|
| + return rhs.uri == lhs.uri && rhs.encrypt == lhs.encrypt;
|
| });
|
| result.erase(it, result.end());
|
|
|
|
|