Index: net/base/net_util.cc |
diff --git a/net/base/net_util.cc b/net/base/net_util.cc |
index 106486df248e47db22675b669da71739ba546ba0..c5dd5733dcdc70ba45d2abfb35afe530a6d4104c 100644 |
--- a/net/base/net_util.cc |
+++ b/net/base/net_util.cc |
@@ -17,6 +17,7 @@ |
#include <windows.h> |
#include <iphlpapi.h> |
#include <winsock2.h> |
+#include <ws2bth.h> |
#pragma comment(lib, "iphlpapi.lib") |
#elif defined(OS_POSIX) |
#include <fcntl.h> |
@@ -1188,13 +1189,27 @@ bool GetIPAddressFromSockAddr(const struct sockaddr* sock_addr, |
return false; |
const struct sockaddr_in6* addr = |
reinterpret_cast<const struct sockaddr_in6*>(sock_addr); |
- *address = reinterpret_cast<const unsigned char*>(&addr->sin6_addr); |
+ *address = reinterpret_cast<const uint8*>(&addr->sin6_addr); |
*address_len = kIPv6AddressSize; |
if (port) |
*port = base::NetToHost16(addr->sin6_port); |
return true; |
} |
+#if defined(OS_WIN) |
+ if (sock_addr->sa_family == AF_BTH) { |
+ if (sock_addr_len < static_cast<socklen_t>(sizeof(SOCKADDR_BTH))) |
+ return false; |
+ const SOCKADDR_BTH* addr = |
+ reinterpret_cast<const SOCKADDR_BTH*>(sock_addr); |
+ *address = reinterpret_cast<const uint8*>(&addr->btAddr); |
+ *address_len = kBthAddressSize; |
+ if (port) |
+ *port = addr->port; |
+ return true; |
+ } |
+#endif |
+ |
return false; // Unrecognized |sa_family|. |
} |