Add addr in error msg if stun sock sent with error

Before:
```
(stun_port.cc:596): sendto : [0x00000041] No route to host
```

After:
```
(stun_port.cc:598): UDP send of 20 bytes to host stun1.l.google.com:19302 (74.125.200.127:19302) failed with error 65 : [0x00000041] No route to host
```

Bug: None
Change-Id: Ibcd487e97b37677225814562df30af66f655cddb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215000
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Yura Yaroshevich <yura.yaroshevich@gmail.com>
Cr-Commit-Position: refs/heads/master@{#33694}
diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc
index 7a76af5..7b1a2a83 100644
--- a/p2p/base/stun_port.cc
+++ b/p2p/base/stun_port.cc
@@ -306,7 +306,9 @@
     if (send_error_count_ < kSendErrorLogLimit) {
       ++send_error_count_;
       RTC_LOG(LS_ERROR) << ToString() << ": UDP send of " << size
-                        << " bytes failed with error " << error_;
+                        << " bytes to host " << addr.ToSensitiveString() << " ("
+                        << addr.ToResolvedSensitiveString()
+                        << ") failed with error " << error_;
     }
   } else {
     send_error_count_ = 0;
@@ -593,7 +595,11 @@
   options.info_signaled_after_sent.packet_type = rtc::PacketType::kStunMessage;
   CopyPortInformationToPacketInfo(&options.info_signaled_after_sent);
   if (socket_->SendTo(data, size, sreq->server_addr(), options) < 0) {
-    RTC_LOG_ERR_EX(LERROR, socket_->GetError()) << "sendto";
+    RTC_LOG_ERR_EX(LERROR, socket_->GetError())
+        << "UDP send of " << size << " bytes to host "
+        << sreq->server_addr().ToSensitiveString() << " ("
+        << sreq->server_addr().ToResolvedSensitiveString()
+        << ") failed with error " << error_;
   }
   stats_.stun_binding_requests_sent++;
 }
diff --git a/rtc_base/socket_address.cc b/rtc_base/socket_address.cc
index 639be52..2996ede 100644
--- a/rtc_base/socket_address.cc
+++ b/rtc_base/socket_address.cc
@@ -178,6 +178,16 @@
   return sb.str();
 }
 
+std::string SocketAddress::ToResolvedSensitiveString() const {
+  if (IsUnresolvedIP()) {
+    return "";
+  }
+  char buf[1024];
+  rtc::SimpleStringBuilder sb(buf);
+  sb << ipaddr().ToSensitiveString() << ":" << port();
+  return sb.str();
+}
+
 bool SocketAddress::FromString(const std::string& str) {
   if (str.at(0) == '[') {
     std::string::size_type closebracket = str.rfind(']');
diff --git a/rtc_base/socket_address.h b/rtc_base/socket_address.h
index f459407..570a712 100644
--- a/rtc_base/socket_address.h
+++ b/rtc_base/socket_address.h
@@ -124,6 +124,10 @@
   // Same as ToString but anonymizes it by hiding the last part.
   std::string ToSensitiveString() const;
 
+  // Returns hostname:port string if address is resolved, otherwise returns
+  // empty string.
+  std::string ToResolvedSensitiveString() const;
+
   // Parses hostname:port and [hostname]:port.
   bool FromString(const std::string& str);