Fixing the behavior of the candidate filter with pooled candidates.
According to JSEP, the candidate filter does not affect pooled candidates because they can be filtered once they're ready to be surfaced to the application. So, pooled port allocator sessions will use a filter of CF_ALL, with a new filter applied when the session is taken by a P2PTransportChannel. When the filter is applied: * Some candidates may no longer be returned by ReadyCandidates() * Some candidates may no longer have a "related address" (for privacy) * Some ports may no longer be returned by ReadyPorts() To simplify this, the candidate filtering logic is now moved up from the Ports to the BasicPortAllocator, with some helper methods to perform the filtering and stripping out of data. R=honghaiz@webrtc.org, pthatcher@webrtc.org Review URL: https://codereview.webrtc.org/1998813002 . Cr-Commit-Position: refs/heads/master@{#12856}
This commit is contained in:
@ -1058,7 +1058,6 @@ TEST_F(PeerConnectionInterfaceTest, CreatePeerConnectionWithPooledCandidates) {
|
||||
EXPECT_EQ(1UL, session->stun_servers().size());
|
||||
EXPECT_EQ(0U, session->flags() & cricket::PORTALLOCATOR_ENABLE_IPV6);
|
||||
EXPECT_LT(0U, session->flags() & cricket::PORTALLOCATOR_DISABLE_TCP);
|
||||
EXPECT_EQ(cricket::CF_RELAY, session->candidate_filter());
|
||||
}
|
||||
|
||||
TEST_F(PeerConnectionInterfaceTest, AddStreams) {
|
||||
@ -1973,14 +1972,13 @@ TEST_F(PeerConnectionInterfaceTest,
|
||||
server.uri = kStunAddressOnly;
|
||||
config.servers.push_back(server);
|
||||
config.type = PeerConnectionInterface::kRelay;
|
||||
CreatePeerConnection(config, nullptr);
|
||||
EXPECT_TRUE(pc_->SetConfiguration(config));
|
||||
|
||||
const cricket::FakePortAllocatorSession* session =
|
||||
static_cast<const cricket::FakePortAllocatorSession*>(
|
||||
port_allocator_->GetPooledSession());
|
||||
ASSERT_NE(nullptr, session);
|
||||
EXPECT_EQ(1UL, session->stun_servers().size());
|
||||
EXPECT_EQ(cricket::CF_RELAY, session->candidate_filter());
|
||||
}
|
||||
|
||||
// Test that PeerConnection::Close changes the states to closed and all remote
|
||||
|
||||
Reference in New Issue
Block a user