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

Unified Diff: remoting/protocol/transport_context.cc

Issue 1800893002: Enable TURN on the host when using WebRTC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/protocol/transport_context.h ('k') | remoting/protocol/webrtc_transport.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/transport_context.cc
diff --git a/remoting/protocol/transport_context.cc b/remoting/protocol/transport_context.cc
index 70c8b9661aa1cec2bfbb54d261a22407b7dee788..c10953f4f0aff3ffce82ed7d482a0a746503659f 100644
--- a/remoting/protocol/transport_context.cc
+++ b/remoting/protocol/transport_context.cc
@@ -52,24 +52,24 @@ TransportContext::TransportContext(
TransportContext::~TransportContext() {}
void TransportContext::Prepare() {
- EnsureFreshJingleInfo();
+ EnsureFreshIceConfig();
}
void TransportContext::GetIceConfig(const GetIceConfigCallback& callback) {
- EnsureFreshJingleInfo();
+ EnsureFreshIceConfig();
- // If there is a pending |ice_config_request_| delay the callback until the
- // request is finished.
- if (ice_config_request_) {
- pending_ice_config_callbacks_.push_back(callback);
+ // If there is a pending |ice_config_request_| for the current |relay_mode_|
+ // then delay the callback until the request is finished.
+ if (ice_config_request_[relay_mode_]) {
+ pending_ice_config_callbacks_[relay_mode_].push_back(callback);
} else {
- callback.Run(ice_config_);
+ callback.Run(ice_config_[relay_mode_]);
}
}
-void TransportContext::EnsureFreshJingleInfo() {
+void TransportContext::EnsureFreshIceConfig() {
// Check if request is already pending.
- if (ice_config_request_)
+ if (ice_config_request_[relay_mode_])
return;
// Don't need to make jingleinfo request if both STUN and Relay are disabled.
@@ -78,26 +78,37 @@ void TransportContext::EnsureFreshJingleInfo() {
return;
}
- if (ice_config_.is_null() ||
- base::Time::Now() > ice_config_.expiration_time) {
- if (!ice_config_url_.empty()) {
- ice_config_request_.reset(new HttpIceConfigRequest(
- url_request_factory_.get(), ice_config_url_));
- } else {
- ice_config_request_.reset(new JingleInfoRequest(signal_strategy_));
+ if (ice_config_[relay_mode_].is_null() ||
+ base::Time::Now() > ice_config_[relay_mode_].expiration_time) {
+ scoped_ptr<IceConfigRequest> request;
+ switch (relay_mode_) {
+ case RelayMode::TURN:
+ if (ice_config_url_.empty()) {
+ LOG(WARNING) << "ice_config_url isn't set.";
+ return;
+ }
+ request.reset(new HttpIceConfigRequest(url_request_factory_.get(),
+ ice_config_url_));
+ break;
+ case RelayMode::GTURN:
+ request.reset(new JingleInfoRequest(signal_strategy_));
+ break;
}
- ice_config_request_->Send(base::Bind(
- &TransportContext::OnIceConfig, base::Unretained(this)));
+ ice_config_request_[relay_mode_] = std::move(request);
+ ice_config_request_[relay_mode_]->Send(base::Bind(
+ &TransportContext::OnIceConfig, base::Unretained(this), relay_mode_));
}
}
-void TransportContext::OnIceConfig(const IceConfig& ice_config) {
- ice_config_ = ice_config;
- ice_config_request_.reset();
+void TransportContext::OnIceConfig(RelayMode relay_mode,
+ const IceConfig& ice_config) {
+ ice_config_[relay_mode] = ice_config;
+ ice_config_request_[relay_mode].reset();
- while (!pending_ice_config_callbacks_.empty()) {
- pending_ice_config_callbacks_.begin()->Run(ice_config_);
- pending_ice_config_callbacks_.pop_front();
+ auto& callback_list = pending_ice_config_callbacks_[relay_mode];
+ while (!callback_list.empty()) {
+ callback_list.begin()->Run(ice_config);
+ callback_list.pop_front();
}
}
« no previous file with comments | « remoting/protocol/transport_context.h ('k') | remoting/protocol/webrtc_transport.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698