| Index: webrtc/base/ipaddress.cc
|
| diff --git a/webrtc/base/ipaddress.cc b/webrtc/base/ipaddress.cc
|
| index 3b74d60036565463886e94258e0a93570a6fae5e..c85624d24a7729d28c2f6efe2c0eb1d7243fdcaa 100644
|
| --- a/webrtc/base/ipaddress.cc
|
| +++ b/webrtc/base/ipaddress.cc
|
| @@ -27,6 +27,7 @@
|
|
|
| #include "webrtc/base/ipaddress.h"
|
| #include "webrtc/base/byteorder.h"
|
| +#include "webrtc/base/checks.h"
|
| #include "webrtc/base/nethelpers.h"
|
| #include "webrtc/base/logging.h"
|
| #include "webrtc/base/win32.h"
|
| @@ -157,9 +158,19 @@ std::string IPAddress::ToSensitiveString() const {
|
| return address;
|
| }
|
| case AF_INET6: {
|
| - // TODO(grunell): Return a string of format 1:2:3:x:x:x:x:x or such
|
| - // instead of zeroing out.
|
| - return TruncateIP(*this, 128 - 80).ToString();
|
| + // Remove the last 5 groups (80 bits).
|
| + std::string address = TruncateIP(*this, 128 - 80).ToString();
|
| +
|
| + // If all three remaining groups are written out explicitly in the string,
|
| + // remove one of the two trailing colons before appending the stripped
|
| + // groups as "x"s. There should be max 4 colons (2 between the 3 groups +
|
| + // 2 trailing) in the truncated address string.
|
| + size_t number_of_colons = std::count(address.begin(), address.end(), ':');
|
| + RTC_CHECK_LE(number_of_colons, 4u);
|
| + if (number_of_colons > 3)
|
| + address.resize(address.length() - 1);
|
| +
|
| + return address + "x:x:x:x:x";
|
| }
|
| }
|
| return std::string();
|
|
|