From 1092e763486ea8d9f7c66e2d583435c685a32c74 Mon Sep 17 00:00:00 2001 From: Mazo Date: Sun, 17 May 2020 22:04:26 +0100 Subject: [PATCH 1/2] Safeguard against trying to send messages to a vehicle actor that no longer exists --- .../main/scala/services/account/AccountPersistenceService.scala | 2 +- pslogin/src/main/scala/WorldSessionActor.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/scala/services/account/AccountPersistenceService.scala b/common/src/main/scala/services/account/AccountPersistenceService.scala index 98d50227..e0bdf217 100644 --- a/common/src/main/scala/services/account/AccountPersistenceService.scala +++ b/common/src/main/scala/services/account/AccountPersistenceService.scala @@ -309,7 +309,7 @@ class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : player.Position = Vector3.Zero player.Health = 0 inZone.GUID(player.VehicleOwned) match { - case Some(vehicle : Vehicle) if vehicle.OwnerName.contains(player.Name) => + case Some(vehicle : Vehicle) if vehicle.OwnerName.contains(player.Name) && vehicle.Actor != ActorRef.noSender => vehicle.Actor ! Vehicle.Ownership(None) case _ => ; } diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 00700123..6cdf90a5 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -10199,7 +10199,7 @@ class WorldSessionActor extends Actor def LoadZoneCommonTransferActivity() : Unit = { if(player.VehicleOwned.nonEmpty && player.VehicleSeated != player.VehicleOwned) { continent.GUID(player.VehicleOwned) match { - case Some(vehicle : Vehicle) => + case Some(vehicle : Vehicle) if vehicle.Actor != ActorRef.noSender => vehicle.Actor ! Vehicle.Ownership(None) case _ => ; } From d806e2448d22c63a2190cc93c6e441e094f8f358 Mon Sep 17 00:00:00 2001 From: Mazo Date: Sun, 17 May 2020 22:08:24 +0100 Subject: [PATCH 2/2] Another Actor ref safeguard --- pslogin/src/main/scala/WorldSessionActor.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 6cdf90a5..ae5f4300 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -9324,7 +9324,7 @@ class WorldSessionActor extends Actor def HandleDealingDamage(target : PlanetSideGameObject with Vitality, data : ResolvedProjectile) : Unit = { val func = data.damage_model.Calculate(data) target match { - case obj : Player if obj.CanDamage => + case obj : Player if obj.CanDamage && obj.Actor != ActorRef.noSender => if(obj.spectator) { player.death_by = -1 // little thing for auto kick }