diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index 492a8a64586ae2068abfe2dbd7cd06a53da0ec93..847c22169d5274722c9442209ef0aceb972e73d8 100644
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -1366,8 +1366,7 @@ static boolean SV_SendServerConfig(INT32 node)
 	// which is nice and easy for us to detect
 	memset(netbuffer->u.servercfg.playerskins, 0xFF, sizeof(netbuffer->u.servercfg.playerskins));
 	memset(netbuffer->u.servercfg.playercolor, 0xFF, sizeof(netbuffer->u.servercfg.playercolor));
-	// ...except for availabilities, where 00 is nonexistent
-	memset(netbuffer->u.servercfg.playeravailabilities, 0x00, sizeof(netbuffer->u.servercfg.playeravailabilities));
+	memset(netbuffer->u.servercfg.playeravailabilities, 0xFF, sizeof(netbuffer->u.servercfg.playeravailabilities));
 
 	for (i = 0; i < MAXPLAYERS; i++)
 	{
@@ -3498,7 +3497,7 @@ static void HandlePacketFromAwayNode(SINT8 node)
 			{
 				if (netbuffer->u.servercfg.playerskins[j] == 0xFF
 				 && netbuffer->u.servercfg.playercolor[j] == 0xFF
-				 && netbuffer->u.servercfg.playeravailabilities[j] == 0x00)
+				 && netbuffer->u.servercfg.playeravailabilities[j] == 0xFFFFFFFF)
 					continue; // not in game
 
 				playeringame[j] = true;
diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 51b9e28ca609bf71f7b07c51c98666fcddce8d48..ce1a631b6d48b179d1cd51e92b5eed2c239daa26 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -1329,6 +1329,7 @@ static void Got_NameAndColor(UINT8 **cp, INT32 playernum)
 	if (server && (p != &players[consoleplayer] && p != &players[secondarydisplayplayer]))
 	{
 		boolean kick = false;
+		INT32 s;
 
 		// team colors
 		if (G_GametypeHasTeams())
@@ -1343,6 +1344,16 @@ static void Got_NameAndColor(UINT8 **cp, INT32 playernum)
 		if (!p->skincolor)
 			kick = true;
 
+		// availabilities
+		for (s = 0; s < MAXSKINS; s++)
+		{
+			if (!skins[s].availability && (p->availabilities & (1 << s)))
+			{
+				kick = true;
+				break;
+			}
+		}
+
 		if (kick)
 		{
 			XBOXSTATIC UINT8 buf[2];
diff --git a/src/r_things.c b/src/r_things.c
index 5280db73a5bd950c26c2128649c739c7844dcfe9..0a6230c8f43214bbc163b5c7e61cfa055e3c64c8 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -2561,7 +2561,7 @@ UINT32 R_GetSkinAvailabilities(void)
 
 	for (s = 0; s < MAXSKINS; s++)
 	{
-		if (!skins[s].availability || unlockables[skins[s].availability - 1].unlocked)
+		if (skins[s].availability && unlockables[skins[s].availability - 1].unlocked)
 			response |= (1 << s);
 	}
 	return response;