Index: webrtc/api/webrtcsession.cc |
diff --git a/webrtc/api/webrtcsession.cc b/webrtc/api/webrtcsession.cc |
index 8487d2cee11241c5a256334f89a4b674e0308509..a9662966e0b140d9c9fc70366dc6c0e30bb37d78 100644 |
--- a/webrtc/api/webrtcsession.cc |
+++ b/webrtc/api/webrtcsession.cc |
@@ -164,20 +164,28 @@ static bool VerifyMediaDescriptions( |
} |
// Checks that each non-rejected content has SDES crypto keys or a DTLS |
-// fingerprint. Mismatches, such as replying with a DTLS fingerprint to SDES |
-// keys, will be caught in Transport negotiation, and backstopped by Channel's |
-// |srtp_required| check. |
+// fingerprint, unless it's in a BUNDLE group, in which case only the |
+// BUNDLE-tag section needs a ufrag and pwd. Mismatches, such as replying with |
pthatcher1
2017/02/17 19:17:32
I translation from spec speak to understandable te
Taylor Brandstetter
2017/02/17 21:49:14
Done.
|
+// a DTLS fingerprint to SDES keys, will be caught in JsepTransport |
+// negotiation, and backstopped by Channel's |srtp_required| check. |
static bool VerifyCrypto(const SessionDescription* desc, |
bool dtls_enabled, |
std::string* error) { |
+ const cricket::ContentGroup* bundle = |
+ desc->GetGroupByName(cricket::GROUP_TYPE_BUNDLE); |
const ContentInfos& contents = desc->contents(); |
for (size_t index = 0; index < contents.size(); ++index) { |
const ContentInfo* cinfo = &contents[index]; |
if (cinfo->rejected) { |
continue; |
} |
+ if (bundle && bundle->HasContentName(cinfo->name) && |
+ cinfo->name != *(bundle->FirstContentName())) { |
+ continue; |
pthatcher1
2017/02/17 19:17:32
A comment here like "It's not the first, so it spe
Taylor Brandstetter
2017/02/17 21:49:14
Done.
|
+ } |
- // If the content isn't rejected, crypto must be present. |
+ // If the content isn't rejected or bundled into another m= section, crypto |
+ // must be present. |
const MediaContentDescription* media = |
static_cast<const MediaContentDescription*>(cinfo->description); |
const TransportInfo* tinfo = desc->GetTransportInfoByName(cinfo->name); |
@@ -207,16 +215,25 @@ static bool VerifyCrypto(const SessionDescription* desc, |
return true; |
} |
-// Checks that each non-rejected content has ice-ufrag and ice-pwd set. |
+// Checks that each non-rejected content has ice-ufrag and ice-pwd set, unless |
+// it's in a BUNDLE group, in which case only the BUNDLE-tag section needs a |
+// ufrag and pwd. |
pthatcher1
2017/02/17 19:17:32
Like the comment above, please translate "BUNDLE-t
Taylor Brandstetter
2017/02/17 21:49:14
Done.
|
static bool VerifyIceUfragPwdPresent(const SessionDescription* desc) { |
+ const cricket::ContentGroup* bundle = |
+ desc->GetGroupByName(cricket::GROUP_TYPE_BUNDLE); |
const ContentInfos& contents = desc->contents(); |
for (size_t index = 0; index < contents.size(); ++index) { |
const ContentInfo* cinfo = &contents[index]; |
if (cinfo->rejected) { |
continue; |
} |
+ if (bundle && bundle->HasContentName(cinfo->name) && |
+ cinfo->name != *(bundle->FirstContentName())) { |
+ continue; |
+ } |
- // If the content isn't rejected, ice-ufrag and ice-pwd must be present. |
+ // If the content isn't rejected or bundled into another m= section, |
+ // ice-ufrag and ice-pwd must be present. |
const TransportInfo* tinfo = desc->GetTransportInfoByName(cinfo->name); |
if (!tinfo) { |
// Something is not right. |