diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index 8477aac3e56d91d2376ff0d1119f2af4fe5512f1..2529b05d0e03b908ce3b3249d48dd4e62776c9f4 100644
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -2762,7 +2762,7 @@ static void Got_KickCmd(UINT8 **p, INT32 playernum)
 		msg = KICK_MSG_CON_FAIL;
 	}
 
-	CONS_Printf("\x82%s ", player_names[pnum]);
+	//CONS_Printf("\x82%s ", player_names[pnum]);
 
 	// If a verified admin banned someone, the server needs to know about it.
 	// If the playernum isn't zero (the server) then the server needs to record the ban.
@@ -3119,9 +3119,6 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum)
 	if (newplayernum+1 > doomcom->numslots)
 		doomcom->numslots = (INT16)(newplayernum+1);
 
-	if (netgame)
-		CONS_Printf(M_GetText("Player %d has joined the game (node %d)\n"), newplayernum+1, node);
-
 	// the server is creating my player
 	if (node == mynode)
 	{
diff --git a/src/hu_stuff.c b/src/hu_stuff.c
index 5941c68dca890d70cbbe9174949af61260e115a9..771628efbf8b514bbf735451ebaad845c30e4b6e 100644
--- a/src/hu_stuff.c
+++ b/src/hu_stuff.c
@@ -941,7 +941,7 @@ static void HU_queueChatChar(char c)
 		{
 			INT32 spc = 1;	// used if nodenum[1] is a space.
 			char *nodenum = (char*) malloc(3);
-			const char *newmsg = msg+5+spc;
+			const char *newmsg;
 
 			// what we're gonna do now is check if the node exists
 			// with that logic, characters 4 and 5 are our numbers:
@@ -990,6 +990,7 @@ static void HU_queueChatChar(char c)
 			}
 
 			// we need to get rid of the /pm<node>
+			newmsg = msg+5+spc;
 			memcpy(msg, newmsg, 255);
 		}
 		if (ci > 3) // don't send target+flags+empty message.
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 8811308a7176eb3fe081269c22df673dd0e5ebde..4fea158022f91df67cf8adf515778022897f666b 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -3506,7 +3506,7 @@ boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled
 
 	if (player->pflags & PF_FLIPCAM && !(player->pflags & PF_NIGHTSMODE) && player->mo->eflags & MFE_VERTICALFLIP)
 		postimg = postimg_flip;
-	else if (player->awayviewtics && player->awayviewmobj != NULL)	// Camera must obviously exist
+	else if (player->awayviewtics && player->awayviewmobj && !P_MobjWasRemoved(player->awayviewmobj)) // Camera must obviously exist
 	{
 		camera_t dummycam;
 		dummycam.subsector = player->awayviewmobj->subsector;
diff --git a/src/p_user.c b/src/p_user.c
index cf12966944584ad4042bd5ff981982187e65669c..906167548b5d92a6b9d13dcb321e42e111a0882d 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -8372,7 +8372,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 	if (!(multiplayer || netgame) && !splitscreen)
 	{
 		fixed_t vx = thiscam->x, vy = thiscam->y;
-		if (player->awayviewtics && player->awayviewmobj != NULL)		// Camera must obviously exist
+		if (player->awayviewtics && player->awayviewmobj != NULL && !P_MobjWasRemoved(player->awayviewmobj))		// Camera must obviously exist
 		{
 			vx = player->awayviewmobj->x;
 			vy = player->awayviewmobj->y;
@@ -8534,7 +8534,7 @@ static void P_CalcPostImg(player_t *player)
 	else
 		pviewheight = player->mo->z + player->viewheight;
 
-	if (player->awayviewtics)
+	if (player->awayviewtics && player->awayviewmobj && !P_MobjWasRemoved(player->awayviewmobj))
 	{
 		sector = player->awayviewmobj->subsector->sector;
 		pviewheight = player->awayviewmobj->z + 20*FRACUNIT;
@@ -8701,6 +8701,13 @@ void P_PlayerThink(player_t *player)
 		}
 	}
 #endif
+
+	if (player->awayviewmobj && P_MobjWasRemoved(player->awayviewmobj))
+	{
+		P_SetTarget(&player->awayviewmobj, NULL); // remove awayviewmobj asap if invalid
+		player->awayviewtics = 0; // reset to zero
+	}
+
 	if (player->pflags & PF_GLIDING)
 	{
 		if (player->panim != PA_ABILITY)