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

Unified Diff: webrtc/p2p/base/p2ptransportchannel.cc

Issue 2212683002: Do not switch a connection if the new connection is not ready to send packets. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Updated tests Created 4 years, 4 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
Index: webrtc/p2p/base/p2ptransportchannel.cc
diff --git a/webrtc/p2p/base/p2ptransportchannel.cc b/webrtc/p2p/base/p2ptransportchannel.cc
index ec1dfc733f80ed3275038b17608f9cd6531aff9f..c0e0be512d454da287109a6acc9a50f64cf49334 100644
--- a/webrtc/p2p/base/p2ptransportchannel.cc
+++ b/webrtc/p2p/base/p2ptransportchannel.cc
@@ -188,7 +188,7 @@ void P2PTransportChannel::AddConnection(Connection* connection) {
bool P2PTransportChannel::ShouldSwitchSelectedConnection(
Connection* new_connection,
bool* missed_receiving_unchanged_threshold) const {
- if (!new_connection || selected_connection_ == new_connection) {
+ if (!ReadyToSend(new_connection) || selected_connection_ == new_connection) {
return false;
}
@@ -937,7 +937,7 @@ int P2PTransportChannel::SendPacket(const char *data, size_t len,
}
// If we don't think the connection is working yet, return ENOTCONN
// instead of sending a packet that will probably be dropped.
- if (!ReadyToSend()) {
+ if (!ReadyToSend(selected_connection_)) {
error_ = ENOTCONN;
return -1;
}
@@ -1312,7 +1312,8 @@ void P2PTransportChannel::SwitchSelectedConnection(Connection* conn) {
LOG_J(LS_INFO, this) << "No selected connection";
}
SignalSelectedCandidatePairChanged(this, selected_connection_,
- last_sent_packet_id_, ReadyToSend());
+ last_sent_packet_id_,
+ ReadyToSend(selected_connection_));
}
// Warning: UpdateState should eventually be called whenever a connection
@@ -1406,15 +1407,14 @@ bool P2PTransportChannel::weak() const {
return !selected_connection_ || selected_connection_->weak();
}
-bool P2PTransportChannel::ReadyToSend() const {
+bool P2PTransportChannel::ReadyToSend(Connection* connection) const {
// Note that we allow sending on an unreliable connection, because it's
// possible that it became unreliable simply due to bad chance.
// So this shouldn't prevent attempting to send media.
- return selected_connection_ != nullptr &&
- (selected_connection_->writable() ||
- PresumedWritable(selected_connection_) ||
- selected_connection_->write_state() ==
- Connection::STATE_WRITE_UNRELIABLE);
+ return connection != nullptr &&
+ (connection->writable() ||
+ connection->write_state() == Connection::STATE_WRITE_UNRELIABLE ||
+ PresumedWritable(connection));
}
// If we have a selected connection, return it, otherwise return top one in the

Powered by Google App Engine
This is Rietveld 408576698