diff --git a/pc/data_channel.cc b/pc/data_channel.cc index a554829e4f..e4727f25de 100644 --- a/pc/data_channel.cc +++ b/pc/data_channel.cc @@ -414,10 +414,7 @@ void DataChannel::OnChannelReady(bool writable) { if (!writable) { return; } - // If the datachannel has not been assigned an ID, ignore update. - if (id() < 0) { - return; - } + SendQueuedControlMessages(); SendQueuedDataMessages(); UpdateState(); diff --git a/pc/data_channel_unittest.cc b/pc/data_channel_unittest.cc index bfd6455b56..7ce40fb088 100644 --- a/pc/data_channel_unittest.cc +++ b/pc/data_channel_unittest.cc @@ -613,19 +613,6 @@ TEST_F(SctpDataChannelTest, TransportDestroyedWhileDataBuffered) { webrtc_data_channel_->state(), kDefaultTimeout); } -// Verifies that if the allocator is exhausted before connecting, the -// datachannel does not cause a crash, but remains unconnected. -TEST_F(SctpDataChannelTest, NoCrashAfterTransportBecomesAvailable) { - // This is the same as SetChannelReady, but without setting the id. - provider_->set_transport_available(true); - webrtc_data_channel_->OnTransportChannelCreated(); - provider_->set_ready_to_send(true); - // The datachannel's ID is not set, and it remains in "connecting" state. - EXPECT_EQ(-1, webrtc_data_channel_->id()); - EXPECT_EQ(webrtc::DataChannelInterface::kConnecting, - webrtc_data_channel_->state()); -} - class SctpSidAllocatorTest : public testing::Test { protected: SctpSidAllocator allocator_;