[repro] Failed ReservedServer teleports break teleporting

If a teleport request to a ReservedServer fails, teleporting is completely broken until the player rejoins the server. I have a repro place (uncopylocked) for this. Repro steps:

  • Enter the test place on two different accounts at the same time. You will end up in different servers because the server size is 1
  • Chat “0” on one account. You’ll be teleported to a pre-determined ReservedServer.
  • Chat “0” on the other account. You will not be teleported since the ReservedServer can’t fit you. Your TeleportState will be reported as RequestedFromServer and never updated to Failed/etc after that
  • On the account that couldn’t get into the ReservedServer, chat “3”. This will execute a teleport to a different place, and spit out TeleportState as RequestedFromServer, but you won’t actually teleport
5 Likes

I would just like to say this bug is not limited to just ReservedServers but occurs on any teleport to a full Server. Mainly these two methods cause the bug when used to teleport to full servers: TeleportToPlaceInstance() and TeleportToPrivateServer().

1 Like

Thanks for the good repro. I’ve identified the issue and a fix will be out in ~9 days.

4 Likes

Was it the same issue with TeleportToPlaceInstance/TeleportToPrivateServer?

Also, there’s another critical bug with TeleportService that prevents retrying teleports because TeleportFailed (or anything but the first state actually) doesn’t fire.

The issue is the same. The specific problem was that we weren’t correctly handling the case where we ran out of retries for a teleport request. This leads to not restoring the state properly client side, so when the developer tries to teleport the player again the client thinks it is still in the process of teleporting and won’t start a new teleport. This also prevents TeleportFailed from being fired in this case.

The problem with the OnTeleport event appears to be that it isn’t replicating from client to server (but it is still being fired client side).

2 Likes

This is fixed now.

6 Likes