diff --git a/src/net/ToString.cxx b/src/net/ToString.cxx
index db7d47daa..f8a015fc3 100644
--- a/src/net/ToString.cxx
+++ b/src/net/ToString.cxx
@@ -72,20 +72,24 @@ ToString(SocketAddress address) noexcept
 	if (ret != 0)
 		return "unknown";
 
+	if (serv[0] != 0 && (serv[0] != '0' || serv[1] != 0)) {
 #ifdef HAVE_IPV6
-	if (std::strchr(host, ':') != nullptr) {
-		std::string result("[");
-		result.append(host);
-		result.append("]:");
+		if (std::strchr(host, ':') != nullptr) {
+			std::string result("[");
+			result.append(host);
+			result.append("]:");
+			result.append(serv);
+			return result;
+		}
+#endif
+
+		std::string result(host);
+		result.push_back(':');
 		result.append(serv);
 		return result;
 	}
-#endif
 
-	std::string result(host);
-	result.push_back(':');
-	result.append(serv);
-	return result;
+	return host;
 }
 
 std::string