append the interface index instead of throwing an exception when the scope id lookup...
[folly.git] / folly / IPAddressV6.cpp
index 3490669dcbdd72db0cf2484c24e3e6708c045970..cff206f3cc1d7b0a891af2708985229a0a1401de 100644 (file)
@@ -432,17 +432,14 @@ string IPAddressV6::str() const {
   if (scopeId != 0) {
     auto len = strlen(buffer);
     buffer[len] = '%';
+
+    auto errsv = errno;
     if (!if_indextoname(scopeId, buffer + len + 1)) {
-      throw IPAddressFormatException(to<std::string>(
-          "Invalid scope for address with hex ",
-          "'",
-          detail::Bytes::toHex(bytes(), 16),
-          "%",
-          scopeId,
-          "'",
-          " with error ",
-          strerror(errno)));
+      // if we can't map the if because eg. it no longer exists,
+      // append the if index instead
+      snprintf(buffer + len + 1, IFNAMSIZ, "%u", scopeId);
     }
+    errno = errsv;
   }
 
   return string(buffer);