Index: webrtc/p2p/base/transport.cc |
diff --git a/webrtc/p2p/base/transport.cc b/webrtc/p2p/base/transport.cc |
index f9b7fd4a04379db2f0a124ef591bee4e010772c0..b96ae842b445c8b2c4e1215542f325a2fb2e3f7c 100644 |
--- a/webrtc/p2p/base/transport.cc |
+++ b/webrtc/p2p/base/transport.cc |
@@ -121,21 +121,22 @@ Transport::Transport(rtc::Thread* signaling_thread, |
const std::string& content_name, |
const std::string& type, |
PortAllocator* allocator) |
- : signaling_thread_(signaling_thread), |
- worker_thread_(worker_thread), |
- content_name_(content_name), |
- type_(type), |
- allocator_(allocator), |
- destroyed_(false), |
- readable_(TRANSPORT_STATE_NONE), |
- writable_(TRANSPORT_STATE_NONE), |
- receiving_(TRANSPORT_STATE_NONE), |
- was_writable_(false), |
- connect_requested_(false), |
- ice_role_(ICEROLE_UNKNOWN), |
- tiebreaker_(0), |
- protocol_(ICEPROTO_HYBRID), |
- remote_ice_mode_(ICEMODE_FULL) { |
+ : signaling_thread_(signaling_thread), |
+ worker_thread_(worker_thread), |
+ content_name_(content_name), |
+ type_(type), |
+ allocator_(allocator), |
+ destroyed_(false), |
+ readable_(TRANSPORT_STATE_NONE), |
+ writable_(TRANSPORT_STATE_NONE), |
+ receiving_(TRANSPORT_STATE_NONE), |
+ was_writable_(false), |
+ connect_requested_(false), |
+ ice_role_(ICEROLE_UNKNOWN), |
+ tiebreaker_(0), |
+ protocol_(ICEPROTO_HYBRID), |
+ remote_ice_mode_(ICEMODE_FULL), |
+ channel_receiving_timeout_(-1) { |
} |
Transport::~Transport() { |
@@ -174,6 +175,19 @@ bool Transport::GetRemoteCertificate_w(rtc::SSLCertificate** cert) { |
return iter->second->GetRemoteCertificate(cert); |
} |
+void Transport::SetChannelReceivingTimeout(int timeout_ms) { |
+ worker_thread_->Invoke<void>( |
+ Bind(&Transport::SetChannelReceivingTimeout_w, this, timeout_ms)); |
+} |
+ |
+void Transport::SetChannelReceivingTimeout_w(int timeout_ms) { |
+ ASSERT(worker_thread()->IsCurrent()); |
+ channel_receiving_timeout_ = timeout_ms; |
+ for (const auto& kv : channels_) { |
+ kv.second->SetReceivingTimeout(timeout_ms); |
+ } |
+} |
+ |
bool Transport::SetLocalTransportDescription( |
const TransportDescription& description, |
ContentAction action, |
@@ -233,6 +247,7 @@ TransportChannelImpl* Transport::CreateChannel_w(int component) { |
// Push down our transport state to the new channel. |
impl->SetIceRole(ice_role_); |
impl->SetIceTiebreaker(tiebreaker_); |
+ impl->SetReceivingTimeout(channel_receiving_timeout_); |
// TODO(ronghuawu): Change CreateChannel_w to be able to return error since |
// below Apply**Description_w calls can fail. |
if (local_description_) |