Esempio n. 1
0
        public void HandleMessage(INetworkPlayer player, ArraySegment <byte> packet)
        {
            using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(packet))
            {
                // set ObjectLocator so that message can use NetworkIdentity
                networkReader.ObjectLocator = objectLocator;

                // protect against attackers trying to send invalid data packets
                // exception could be throw if:
                // - invalid headers
                // - invalid message ids
                // - invalid data causing exceptions
                // - negative ReadBytesAndSize prefixes
                // - invalid utf8 strings
                // - etc.
                //
                // if exception is caught, disconnect the attacker to stop any further attacks

                try
                {
                    int msgType = MessagePacker.UnpackId(networkReader);
                    InvokeHandler(player, msgType, networkReader);
                }
                catch (Exception e)
                {
                    string disconnectMessage = disconnectOnException ? $", Closed connection: {player}" : "";
                    logger.LogError($"{e.GetType()} in Message handler (see stack below){disconnectMessage}\n{e}");
                    if (disconnectOnException)
                    {
                        player.Disconnect();
                    }
                }
            }
        }
Esempio n. 2
0
        private IEnumerator DelayedDisconnect(INetworkPlayer player, float waitTime)
        {
            yield return(new WaitForSeconds(waitTime));

            player.Disconnect();
        }
Esempio n. 3
0
 /// <summary>
 /// Call this when player has been rejected on the client. This will disconnect the player.
 /// </summary>
 /// <param name="player"></param>
 protected void ClientReject(INetworkPlayer player)
 {
     player.Disconnect();
 }
Esempio n. 4
0
 /// <summary>
 /// Call this when player has been rejected on the server. This will disconnect the player.
 /// </summary>
 /// <param name="player"></param>
 protected void ServerReject(INetworkPlayer player)
 {
     player.Disconnect();
 }