Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: talk/app/webrtc/webrtcsession.cc

Issue 1496693002: Discard old-generation candidates when ICE restarts (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | talk/app/webrtc/webrtcsession_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 bool Get() const { 485 bool Get() const {
486 return ice_restart_; 486 return ice_restart_;
487 } 487 }
488 488
489 void Reset() { 489 void Reset() {
490 if (ice_restart_) { 490 if (ice_restart_) {
491 ice_restart_ = false; 491 ice_restart_ = false;
492 } 492 }
493 } 493 }
494 494
495 // This method has two purposes: 1. Return whether |new_desc| requests
496 // an ICE restart (i.e., new ufrag/pwd). 2. If it requests an ICE restart
497 // and it is an OFFER, remember this in |ice_restart_| so that the next
498 // Local Answer will be created with new ufrag and pwd.
495 bool CheckForRemoteIceRestart(const SessionDescriptionInterface* old_desc, 499 bool CheckForRemoteIceRestart(const SessionDescriptionInterface* old_desc,
496 const SessionDescriptionInterface* new_desc) { 500 const SessionDescriptionInterface* new_desc) {
497 if (!old_desc || new_desc->type() != SessionDescriptionInterface::kOffer) { 501 if (!old_desc) {
498 return false; 502 return false;
499 } 503 }
500 const SessionDescription* new_sd = new_desc->description(); 504 const SessionDescription* new_sd = new_desc->description();
501 const SessionDescription* old_sd = old_desc->description(); 505 const SessionDescription* old_sd = old_desc->description();
502 const ContentInfos& contents = new_sd->contents(); 506 const ContentInfos& contents = new_sd->contents();
503 for (size_t index = 0; index < contents.size(); ++index) { 507 for (size_t index = 0; index < contents.size(); ++index) {
504 const ContentInfo* cinfo = &contents[index]; 508 const ContentInfo* cinfo = &contents[index];
505 if (cinfo->rejected) { 509 if (cinfo->rejected) {
506 continue; 510 continue;
507 } 511 }
508 // If the content isn't rejected, check if ufrag and password has 512 // If the content isn't rejected, check if ufrag and password has
509 // changed. 513 // changed.
510 const cricket::TransportDescription* new_transport_desc = 514 const cricket::TransportDescription* new_transport_desc =
511 new_sd->GetTransportDescriptionByName(cinfo->name); 515 new_sd->GetTransportDescriptionByName(cinfo->name);
512 const cricket::TransportDescription* old_transport_desc = 516 const cricket::TransportDescription* old_transport_desc =
513 old_sd->GetTransportDescriptionByName(cinfo->name); 517 old_sd->GetTransportDescriptionByName(cinfo->name);
514 if (!new_transport_desc || !old_transport_desc) { 518 if (!new_transport_desc || !old_transport_desc) {
515 // No transport description exist. This is not an ice restart. 519 // No transport description exist. This is not an ice restart.
516 continue; 520 continue;
517 } 521 }
518 if (cricket::IceCredentialsChanged(old_transport_desc->ice_ufrag, 522 if (cricket::IceCredentialsChanged(old_transport_desc->ice_ufrag,
519 old_transport_desc->ice_pwd, 523 old_transport_desc->ice_pwd,
520 new_transport_desc->ice_ufrag, 524 new_transport_desc->ice_ufrag,
521 new_transport_desc->ice_pwd)) { 525 new_transport_desc->ice_pwd)) {
522 LOG(LS_INFO) << "Remote peer request ice restart."; 526 LOG(LS_INFO) << "Remote peer request ice restart.";
523 ice_restart_ = true; 527 if (new_desc->type() == SessionDescriptionInterface::kOffer) {
528 ice_restart_ = true;
529 }
524 return true; 530 return true;
525 } 531 }
526 } 532 }
527 return false; 533 return false;
528 } 534 }
529 535
530 private: 536 private:
531 bool ice_restart_; 537 bool ice_restart_;
532 }; 538 };
533 539
(...skipping 1655 matching lines...) Expand 10 before | Expand all | Expand 10 after
2189 } 2195 }
2190 } 2196 }
2191 2197
2192 void WebRtcSession::OnSentPacket_w(cricket::TransportChannel* channel, 2198 void WebRtcSession::OnSentPacket_w(cricket::TransportChannel* channel,
2193 const rtc::SentPacket& sent_packet) { 2199 const rtc::SentPacket& sent_packet) {
2194 RTC_DCHECK(worker_thread()->IsCurrent()); 2200 RTC_DCHECK(worker_thread()->IsCurrent());
2195 media_controller_->call_w()->OnSentPacket(sent_packet); 2201 media_controller_->call_w()->OnSentPacket(sent_packet);
2196 } 2202 }
2197 2203
2198 } // namespace webrtc 2204 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | talk/app/webrtc/webrtcsession_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698