Don't assume that it's IPv4 just because it's not IPv6

There might be more protocols in the future, and we might also
misdetect things depending on varying IPv6 functions being missing.
diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx
index d123875..bbc4158 100644
--- a/common/network/TcpSocket.cxx
+++ b/common/network/TcpSocket.cxx
@@ -241,46 +241,42 @@
 char* TcpSocket::getPeerAddress() {
   vnc_sockaddr_t sa;
   socklen_t sa_size = sizeof(sa);
-  const void *addr;
-#if defined(HAVE_GETADDRINFO) && defined(HAVE_INET_PTON)
-  char buffer[INET6_ADDRSTRLEN];
-#else
-  char buffer[46];
-#endif /* defined(HAVE_GETADDRINFO) && defined(HAVE_INET_PTON) */
 
   if (getpeername(getFd(), &sa.u.sa, &sa_size) != 0) {
     vlog.error("unable to get peer name for socket");
     return rfb::strDup("");
   }
 
-  switch (sa.u.sa.sa_family) {
-#ifdef HAVE_GETADDRINFO
-  case AF_INET6:
-    addr = &sa.u.sin6.sin6_addr;
-    break;
-#endif /* HAVE_GETADDRINFO */
+#if defined(HAVE_GETADDRINFO) && defined(HAVE_INET_PTON)
+  if (sa.u.sa.sa_family == AF_INET6) {
+    char buffer[INET6_ADDRSTRLEN];
+    const char *name;
 
-  default:
-    addr = &sa.u.sin.sin_addr;
-    break;
-  }
+    name = inet_ntop(sa.u.sa.sa_family, &sa.u.sin6.sin6_addr,
+                     buffer + 1, sizeof(buffer));
+    if (name == NULL) {
+      vlog.error("unable to convert peer name to a string");
+      return rfb::strDup("");
+    }
 
-#ifdef HAVE_INET_PTON
-  const char* name = inet_ntop(sa.u.sa.sa_family, addr,
-			       buffer, sizeof (buffer));
-#else
-  if (sa.u.sa.sa_family != AF_INET) {
-    vlog.error("unable to convert non-IPv4 address to string");
-    return rfb::strDup("");
-  }
-
-  char* name = inet_ntoa(sa.u.sin.sin_addr);
-#endif /* HAVE_INET_PTON */
-  if (name) {
     return rfb::strDup(name);
-  } else {
-    return rfb::strDup("");
   }
+#endif
+
+  if (sa.u.sa.sa_family == AF_INET) {
+    char *name;
+
+    name = inet_ntoa(sa.u.sin.sin_addr);
+    if (name == NULL) {
+      vlog.error("unable to convert peer name to a string");
+      return rfb::strDup("");
+    }
+
+    return rfb::strDup(name);
+  }
+
+  vlog.error("unknown address family for socket");
+  return rfb::strDup("");
 }
 
 int TcpSocket::getPeerPort() {
@@ -294,9 +290,10 @@
   case AF_INET6:
     return ntohs(sa.u.sin6.sin6_port);
 #endif /* HAVE_GETADDRINFO */
-
-  default:
+  case AF_INET:
     return ntohs(sa.u.sin.sin_port);
+  default:
+    return 0;
   }
 }
 
@@ -331,7 +328,11 @@
 				&myaddr.u.sin6.sin6_addr);
 #endif
 
-  return (peeraddr.u.sin.sin_addr.s_addr == myaddr.u.sin.sin_addr.s_addr);
+  if (peeraddr.u.sa.sa_family == AF_INET)
+    return (peeraddr.u.sin.sin_addr.s_addr == myaddr.u.sin.sin_addr.s_addr);
+
+  // No idea what this is. Assume we're on different machines.
+  return false;
 }
 
 void TcpSocket::shutdown()