| Index: webrtc/p2p/base/p2ptransportchannel.cc
|
| diff --git a/webrtc/p2p/base/p2ptransportchannel.cc b/webrtc/p2p/base/p2ptransportchannel.cc
|
| index cff951188820d8c6894a1c70d6fe3ac53fd0b233..ef17620b2511d69ed7577fa29a07a5ad5fda9e75 100644
|
| --- a/webrtc/p2p/base/p2ptransportchannel.cc
|
| +++ b/webrtc/p2p/base/p2ptransportchannel.cc
|
| @@ -191,7 +191,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;
|
| }
|
|
|
| @@ -940,7 +940,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;
|
| }
|
| @@ -1315,7 +1315,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
|
| @@ -1409,15 +1410,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
|
|
|