fix bug 5430
Fixed misusage of Connection function and also fixed the test case. BUG=webrtc:5430 Review URL: https://codereview.webrtc.org/1592763003 Cr-Commit-Position: refs/heads/master@{#11278}
This commit is contained in:
parent
f4decb5469
commit
56271ed889
@ -771,12 +771,14 @@ IPAddress BasicNetworkManager::QueryDefaultLocalAddress(int family) const {
|
||||
scoped_ptr<AsyncSocket> socket(
|
||||
thread_->socketserver()->CreateAsyncSocket(family, SOCK_DGRAM));
|
||||
if (!socket) {
|
||||
LOG_ERR(LERROR) << "Socket creation failed";
|
||||
return IPAddress();
|
||||
}
|
||||
|
||||
if (!socket->Connect(
|
||||
SocketAddress(family == AF_INET ? kPublicIPv4Host : kPublicIPv6Host,
|
||||
kPublicPort))) {
|
||||
if (socket->Connect(SocketAddress(
|
||||
family == AF_INET ? kPublicIPv4Host : kPublicIPv6Host, kPublicPort)) <
|
||||
0) {
|
||||
LOG_ERR(LERROR) << "Connect failed with " << socket->GetError();
|
||||
return IPAddress();
|
||||
}
|
||||
return socket->GetLocalAddress().ipaddr();
|
||||
|
||||
@ -940,22 +940,27 @@ TEST_F(NetworkTest, TestNetworkMonitoring) {
|
||||
}
|
||||
|
||||
TEST_F(NetworkTest, DefaultLocalAddress) {
|
||||
TestBasicNetworkManager manager;
|
||||
manager.StartUpdating();
|
||||
IPAddress ip;
|
||||
|
||||
// GetDefaultLocalAddress should return false when not set.
|
||||
EXPECT_FALSE(manager.GetDefaultLocalAddress(AF_INET, &ip));
|
||||
EXPECT_FALSE(manager.GetDefaultLocalAddress(AF_INET6, &ip));
|
||||
TestBasicNetworkManager manager;
|
||||
manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this),
|
||||
&NetworkTest::OnNetworksChanged);
|
||||
FakeNetworkMonitorFactory* factory = new FakeNetworkMonitorFactory();
|
||||
NetworkMonitorFactory::SetFactory(factory);
|
||||
manager.StartUpdating();
|
||||
EXPECT_TRUE_WAIT(callback_called_, 1000);
|
||||
|
||||
// Make sure we can query default local address when an address for such
|
||||
// address family exists.
|
||||
std::vector<Network*> networks;
|
||||
manager.GetNetworks(&networks);
|
||||
EXPECT_TRUE(!networks.empty());
|
||||
for (auto& network : networks) {
|
||||
if (network->GetBestIP().family() == AF_INET) {
|
||||
EXPECT_TRUE(manager.QueryDefaultLocalAddress(AF_INET) != IPAddress());
|
||||
} else if (network->GetBestIP().family() == AF_INET6) {
|
||||
} else if (network->GetBestIP().family() == AF_INET6 &&
|
||||
!IPIsLoopback(network->GetBestIP())) {
|
||||
// Existence of an IPv6 loopback address doesn't mean it has IPv6 network
|
||||
// enabled.
|
||||
EXPECT_TRUE(manager.QueryDefaultLocalAddress(AF_INET6) != IPAddress());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user