diff --git a/src/netcode/i_tcp.c b/src/netcode/i_tcp.c
index 3fa2306479bfcaffa576a2e1238e51812967d112..810453f45a9bca49ba22bde81d5e0dd57ddb07c2 100644
--- a/src/netcode/i_tcp.c
+++ b/src/netcode/i_tcp.c
@@ -424,7 +424,7 @@ static boolean SOCK_cmpipv6(mysockaddr_t *a, mysockaddr_t *b, UINT8 mask)
 {
 	UINT8 bitmask;
 	I_Assert(mask <= 128);
-	if (memcmp(&a->ip6.sin6_addr, &b->ip6.sin6_addr, mask / 8) != 0)
+	if (memcmp(&a->ip6.sin6_addr.s6_addr, &b->ip6.sin6_addr.s6_addr, mask / 8) != 0)
 		return false;
 	if (mask % 8 == 0)
 		return true;
@@ -437,6 +437,9 @@ static boolean SOCK_cmpaddr(mysockaddr_t *a, mysockaddr_t *b, UINT8 mask)
 {
 	UINT32 bitmask = INADDR_NONE;
 
+	if (a->any.sa_family != b->any.sa_family)
+		return false;
+
 	if (mask && mask < 32)
 		bitmask = htonl((UINT32)(-1) << (32 - mask));