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

Unified Diff: net/http/http_server_properties_impl_unittest.cc

Issue 665083009: ABANDONED Handle multiple AlternateProtocols for each HostPortPair. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Another Cronet occurrence. Created 5 years, 11 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: net/http/http_server_properties_impl_unittest.cc
diff --git a/net/http/http_server_properties_impl_unittest.cc b/net/http/http_server_properties_impl_unittest.cc
index 1675833881861ccfe32357e2248d7f3943e107f3..e065fb8f4edf6565947bb77fc2cdf9bfd51808d4 100644
--- a/net/http/http_server_properties_impl_unittest.cc
+++ b/net/http/http_server_properties_impl_unittest.cc
@@ -237,10 +237,12 @@ typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest;
TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
HostPortPair test_host_port_pair("foo", 80);
EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
- impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
- const AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair);
+ const AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ const AlternateProtocolInfo alternate = alternate_protocols[0];
EXPECT_EQ(443, alternate.port);
EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
@@ -250,7 +252,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
TEST_F(AlternateProtocolServerPropertiesTest, DefaultProbabilityExcluded) {
HostPortPair test_host_port_pair("foo", 80);
- impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .99);
+ impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .99);
EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
}
@@ -259,11 +261,13 @@ TEST_F(AlternateProtocolServerPropertiesTest, Probability) {
impl_.SetAlternateProtocolProbabilityThreshold(.25);
HostPortPair test_host_port_pair("foo", 80);
- impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
+ impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
- const AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair);
+ const AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ const AlternateProtocolInfo alternate = alternate_protocols[0];
EXPECT_EQ(443, alternate.port);
EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
EXPECT_EQ(.5, alternate.probability);
@@ -274,112 +278,189 @@ TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) {
HostPortPair test_host_port_pair("foo", 80);
- impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
+ impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
}
TEST_F(AlternateProtocolServerPropertiesTest, Initialize) {
HostPortPair test_host_port_pair1("foo1", 80);
- impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
- impl_.SetBrokenAlternateProtocol(test_host_port_pair1);
+ impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair1, 123, NPN_SPDY_3, 1);
+ AlternateProtocolInfo alternate_protocol(123, NPN_SPDY_3, 1);
+ impl_.SetBrokenAlternateProtocol(test_host_port_pair1, alternate_protocol);
HostPortPair test_host_port_pair2("foo2", 80);
- impl_.SetAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1);
AlternateProtocolMap alternate_protocol_map(
AlternateProtocolMap::NO_AUTO_EVICT);
AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
- alternate_protocol_map.Put(test_host_port_pair2, alternate);
+ alternate_protocol_map.Put(test_host_port_pair2,
+ AlternateProtocols(/*size=*/1, alternate));
HostPortPair test_host_port_pair3("foo3", 80);
alternate.port = 1234;
- alternate_protocol_map.Put(test_host_port_pair3, alternate);
+ alternate_protocol_map.Put(test_host_port_pair3,
+ AlternateProtocols(/*size=*/1, alternate));
impl_.InitializeAlternateProtocolServers(&alternate_protocol_map);
// Verify test_host_port_pair3 is the MRU server.
const AlternateProtocolMap& map = impl_.alternate_protocol_map();
AlternateProtocolMap::const_iterator it = map.begin();
- it = map.begin();
EXPECT_TRUE(it->first.Equals(test_host_port_pair3));
- EXPECT_EQ(1234, it->second.port);
- EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
+ ASSERT_EQ(1u, it->second.size());
+ EXPECT_EQ(1234, it->second[0].port);
+ EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1));
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair2));
- alternate = impl_.GetAlternateProtocol(test_host_port_pair1);
- EXPECT_TRUE(alternate.is_broken);
- alternate = impl_.GetAlternateProtocol(test_host_port_pair2);
- EXPECT_EQ(123, alternate.port);
- EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
+ AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair1);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ EXPECT_TRUE(alternate_protocols[0].is_broken);
+ alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair2);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ EXPECT_EQ(123, alternate_protocols[0].port);
+ EXPECT_EQ(NPN_SPDY_3, alternate_protocols[0].protocol);
}
TEST_F(AlternateProtocolServerPropertiesTest, MRUOfHasAlternateProtocol) {
HostPortPair test_host_port_pair1("foo1", 80);
- impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
HostPortPair test_host_port_pair2("foo2", 80);
- impl_.SetAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
const AlternateProtocolMap& map = impl_.alternate_protocol_map();
AlternateProtocolMap::const_iterator it = map.begin();
EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
- EXPECT_EQ(1234, it->second.port);
- EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
+ ASSERT_EQ(1u, it->second.size());
+ EXPECT_EQ(1234, it->second[0].port);
+ EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
// HasAlternateProtocol should reoder the AlternateProtocol map.
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1));
it = map.begin();
EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
- EXPECT_EQ(443, it->second.port);
- EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
+ ASSERT_EQ(1u, it->second.size());
+ EXPECT_EQ(443, it->second[0].port);
+ EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
}
TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternateProtocol) {
HostPortPair test_host_port_pair1("foo1", 80);
- impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
HostPortPair test_host_port_pair2("foo2", 80);
- impl_.SetAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
const AlternateProtocolMap& map = impl_.alternate_protocol_map();
AlternateProtocolMap::const_iterator it = map.begin();
EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
- EXPECT_EQ(1234, it->second.port);
- EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
-
- // GetAlternateProtocol should reoder the AlternateProtocol map.
- AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair1);
+ ASSERT_EQ(1u, it->second.size());
+ EXPECT_EQ(1234, it->second[0].port);
+ EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
+
+ // GetAlternateProtocols should reorder the AlternateProtocol map.
+ const AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair1);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ const AlternateProtocolInfo alternate = alternate_protocols[0];
EXPECT_EQ(443, alternate.port);
EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
it = map.begin();
EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
- EXPECT_EQ(443, it->second.port);
- EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
+ ASSERT_EQ(1u, it->second.size());
+ EXPECT_EQ(443, it->second[0].port);
+ EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
+}
+
+TEST_F(AlternateProtocolServerPropertiesTest, RemoveForSingleHost) {
+ HostPortPair test_host_port_pair("foo", 80);
+ impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
+
+ const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
+ net::AlternateProtocolMap::const_iterator it = map.begin();
+ EXPECT_TRUE(it->first.Equals(test_host_port_pair));
+ ASSERT_EQ(2u, it->second.size());
+ EXPECT_EQ(443, it->second[0].port);
+ EXPECT_EQ(1234, it->second[1].port);
+
+ // Adding an identical entry does nothing.
+ impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
+ it = map.begin();
+ ASSERT_EQ(2u, it->second.size());
+
+ // Add a third one.
+ impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
+ it = map.begin();
+ ASSERT_EQ(3u, it->second.size());
+ EXPECT_EQ(123, it->second[2].port);
+
+ // Remove one by one.
+ impl_.RemoveAlternateProtocol(test_host_port_pair,
+ AlternateProtocolInfo(1234, NPN_SPDY_3, 1));
+ it = map.begin();
+ ASSERT_EQ(2u, it->second.size());
+ EXPECT_EQ(443, it->second[0].port);
+ EXPECT_EQ(123, it->second[1].port);
+
+ impl_.RemoveAlternateProtocol(test_host_port_pair,
+ AlternateProtocolInfo(443, NPN_SPDY_3, 1));
+ it = map.begin();
+ ASSERT_EQ(1u, it->second.size());
+ EXPECT_EQ(123, it->second[0].port);
+
+ impl_.RemoveAlternateProtocol(test_host_port_pair,
+ AlternateProtocolInfo(123, NPN_SPDY_3, 1));
+ ASSERT_EQ(0u, impl_.alternate_protocol_map().size());
+}
+
+TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternateProtocol) {
+ HostPortPair test_host_port_pair("foo", 80);
+ impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
+
+ const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
+ net::AlternateProtocolMap::const_iterator it = map.begin();
+ EXPECT_TRUE(it->first.Equals(test_host_port_pair));
+ ASSERT_EQ(2u, it->second.size());
+ EXPECT_EQ(443, it->second[0].port);
+ EXPECT_EQ(1234, it->second[1].port);
+
+ impl_.ClearAlternateProtocol(test_host_port_pair);
+ ASSERT_EQ(0u, impl_.alternate_protocol_map().size());
}
TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
HostPortPair test_host_port_pair("foo", 80);
- impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
- impl_.SetBrokenAlternateProtocol(test_host_port_pair);
+ impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
+ AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
+ impl_.SetBrokenAlternateProtocol(test_host_port_pair, alternate);
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
- AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair);
- EXPECT_TRUE(alternate.is_broken);
+ AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ EXPECT_TRUE(alternate_protocols[0].is_broken);
+
+ impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
+ alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size())
+ << "Second attempt should be ignored.";
+ EXPECT_TRUE(alternate_protocols[0].is_broken);
- impl_.SetAlternateProtocol(
- test_host_port_pair,
- 1234,
- NPN_SPDY_3,
- 1);
- alternate = impl_.GetAlternateProtocol(test_host_port_pair);
- EXPECT_TRUE(alternate.is_broken) << "Second attempt should be ignored.";
+ impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
+ alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(2u, alternate_protocols.size()) << "Different port should be fine.";
}
TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
HostPortPair test_host_port_pair("foo", 80);
- impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
- impl_.SetBrokenAlternateProtocol(test_host_port_pair);
+ impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
+ AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
+ impl_.SetBrokenAlternateProtocol(test_host_port_pair, alternate);
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
- AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair);
- EXPECT_TRUE(alternate.is_broken);
+ AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ EXPECT_TRUE(alternate_protocols[0].is_broken);
impl_.ClearAlternateProtocol(test_host_port_pair);
EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
}
@@ -393,17 +474,19 @@ TEST_F(AlternateProtocolServerPropertiesTest, Forced) {
// Verify the forced protocol.
HostPortPair test_host_port_pair("foo", 80);
EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
- AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair);
- EXPECT_EQ(default_protocol.port, alternate.port);
- EXPECT_EQ(default_protocol.protocol, alternate.protocol);
+ AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ EXPECT_EQ(default_protocol.port, alternate_protocols[0].port);
+ EXPECT_EQ(default_protocol.protocol, alternate_protocols[0].protocol);
// Verify the real protocol overrides the forced protocol.
- impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
+ impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
- alternate = impl_.GetAlternateProtocol(test_host_port_pair);
- EXPECT_EQ(443, alternate.port);
- EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
+ alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ EXPECT_EQ(443, alternate_protocols[0].port);
+ EXPECT_EQ(NPN_SPDY_3, alternate_protocols[0].protocol);
// Turn off the static, forced alternate protocol so that tests don't
// have this state.
@@ -423,16 +506,15 @@ TEST_F(AlternateProtocolServerPropertiesTest, Canonical) {
AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
- impl_.SetAlternateProtocol(canonical_port_pair,
- canonical_protocol.port,
- canonical_protocol.protocol,
- 1);
+ impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
+ canonical_protocol.protocol, 1);
// Verify the forced protocol.
ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
- AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair);
- EXPECT_EQ(canonical_protocol.port, alternate.port);
- EXPECT_EQ(canonical_protocol.protocol, alternate.protocol);
+ AlternateProtocols alternate_protocols =
+ impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternate_protocols.size());
+ EXPECT_EQ(canonical_protocol.port, alternate_protocols[0].port);
+ EXPECT_EQ(canonical_protocol.protocol, alternate_protocols[0].protocol);
// Verify the canonical suffix.
EXPECT_EQ(".c.youtube.com", impl_.GetCanonicalSuffix(test_host_port_pair));
@@ -446,8 +528,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) {
HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.01);
- impl_.SetAlternateProtocol(canonical_port_pair,
- canonical_protocol.port,
+ impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
canonical_protocol.protocol,
canonical_protocol.probability);
EXPECT_FALSE(impl_.HasAlternateProtocol(canonical_port_pair));
@@ -461,8 +542,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) {
HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.03);
- impl_.SetAlternateProtocol(canonical_port_pair,
- canonical_protocol.port,
+ impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
canonical_protocol.protocol,
canonical_protocol.probability);
EXPECT_TRUE(impl_.HasAlternateProtocol(canonical_port_pair));
@@ -475,8 +555,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) {
AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
- impl_.SetAlternateProtocol(canonical_port_pair,
- canonical_protocol.port,
+ impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
canonical_protocol.protocol,
canonical_protocol.probability);
@@ -490,12 +569,11 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) {
AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
- impl_.SetAlternateProtocol(canonical_port_pair,
- canonical_protocol.port,
+ impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
canonical_protocol.protocol,
canonical_protocol.probability);
- impl_.SetBrokenAlternateProtocol(canonical_port_pair);
+ impl_.SetBrokenAlternateProtocol(canonical_port_pair, canonical_protocol);
EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
}
@@ -505,15 +583,15 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken2) {
AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
- impl_.SetAlternateProtocol(canonical_port_pair,
- canonical_protocol.port,
+ impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
canonical_protocol.protocol,
canonical_protocol.probability);
- impl_.SetBrokenAlternateProtocol(test_host_port_pair);
- AlternateProtocolInfo alternate =
- impl_.GetAlternateProtocol(test_host_port_pair);
- EXPECT_TRUE(alternate.is_broken);
+ impl_.SetBrokenAlternateProtocol(test_host_port_pair, canonical_protocol);
+ AlternateProtocols alternates =
+ impl_.GetAlternateProtocols(test_host_port_pair);
+ ASSERT_EQ(1u, alternates.size());
+ EXPECT_TRUE(alternates[0].is_broken);
}
TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
@@ -522,8 +600,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
- impl_.SetAlternateProtocol(canonical_port_pair,
- canonical_protocol.port,
+ impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
canonical_protocol.protocol,
canonical_protocol.probability);

Powered by Google App Engine
This is Rietveld 408576698