diff -ur gnome-system-monitor-2.22.0-orig/src/openfiles.cpp gnome-system-monitor-2.22.0/src/openfiles.cpp
--- gnome-system-monitor-2.22.0-orig/src/openfiles.cpp	2007-12-23 12:29:15.000000000 -0800
+++ gnome-system-monitor-2.22.0/src/openfiles.cpp	2008-04-17 06:02:58.000000000 -0700
@@ -33,6 +33,8 @@
 		return _("file");
 	case GLIBTOP_FILE_TYPE_PIPE:
 		return _("pipe");
+	case GLIBTOP_FILE_TYPE_INET6SOCKET:
+		return _("IPv6 network connection");
 	case GLIBTOP_FILE_TYPE_INETSOCKET:
 		return _("network connection");
 	case GLIBTOP_FILE_TYPE_LOCALSOCKET:
@@ -45,26 +47,35 @@
 
 
 static char *
-friendlier_hostname(const char *dotted_quad, int port)
+friendlier_names(const char *addr_str, int port)
 {
-	struct in_addr addr4;
-	struct hostent *host;
+	struct addrinfo hints;
+	struct addrinfo *res = NULL;
+	char hostname[NI_MAXHOST];
+	char service[NI_MAXSERV];
+	char port_str[6];
 
-	if(inet_pton(AF_INET, dotted_quad, &addr4) <= 0)
-		goto failsafe;
+	if (!addr_str[0]) return g_strdup("");
+
+	snprintf(port_str, sizeof port_str, "%d", port);
 
-	// cast needed because first argument may be const char*
-	// or const void*
-	host = gethostbyaddr(reinterpret_cast<const char*>(&addr4), sizeof addr4, AF_INET);
+	memset(&hints, 0, sizeof (struct addrinfo));
+	hints.ai_family = AF_UNSPEC;
+	hints.ai_socktype = SOCK_STREAM;
+
+	if (getaddrinfo(addr_str, port_str, &hints, &res))
+		goto failsafe;
 
-	if(!host)
+	if (getnameinfo(res->ai_addr, res->ai_addrlen, hostname,
+	    		sizeof hostname, service, sizeof service, NI_IDN))
 		goto failsafe;
 
-	return g_strdup_printf("%s:%d", host->h_name, port);
+	if (res) freeaddrinfo(res);
+	return g_strdup_printf("%s, TCP port %d (%s)", hostname, port, service);
 
- failsafe:
-	if(!dotted_quad[0]) return g_strdup("");
-	return g_strdup_printf("%s:%d", dotted_quad, port);
+failsafe:
+	if (res) freeaddrinfo(res);
+	return g_strdup_printf("%s, TCP port %d", addr_str, port);
 }
 
 
@@ -85,9 +96,10 @@
 		object = g_strdup(openfiles->info.file.name);
 		break;
 
+	case GLIBTOP_FILE_TYPE_INET6SOCKET:
 	case GLIBTOP_FILE_TYPE_INETSOCKET:
-		object = friendlier_hostname(openfiles->info.sock.dest_host,
-					     openfiles->info.sock.dest_port);
+		object = friendlier_names(openfiles->info.sock.dest_host,
+					  openfiles->info.sock.dest_port);
 		break;
 
 	case GLIBTOP_FILE_TYPE_LOCALSOCKET:

