LobbyServer.ASK_LOGIN.HandlePacket C# (CSharp) Method

HandlePacket() public method

public HandlePacket ( BaseClient bcclient, FrameWork.PacketIn packet ) : int
bcclient BaseClient
packet FrameWork.PacketIn
return int
        public int HandlePacket(BaseClient bcclient, PacketIn packet)
        {
            LobbyClient client = bcclient as LobbyClient;
            packet.Skip(24);
            String Username = packet.GetParsedString();
            Log.Notice("ASK_LOGIN", "Account: " + Username);
            try
            {
                client.Account = Databases.AccountTable.SingleOrDefault(a => a.Username == Username);
            }
            catch (ArgumentNullException)
            {
                Log.Error("ASK_LOGIN", "Database is busy");
                ANS_LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_DATABASE_BUSY);
                client.Disconnect();
                return 0;
            }
            catch (Exception e)
            {
                Log.Error("ASK_LOGIN", "Account's not found");
                Log.Debug("ASK_LOGIN", e.ToString());
                ANS_LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_LOGIN_INVALID_ACCOUNT);
                client.Disconnect();
                return 0;
            }
            Log.Succes("ASK_LOGIN", "Account exists: " + client.Account.Username);
            if (client.Account.extrn_login == 1)
            {
                if (client.Account.Verifier.Length <= 2 || client.Account.Salt.Length <= 2) Register(client);
                client.Salt = new FrameWork.NetWork.Crypto.BigInteger(client.Account.Salt, 16).ToByteArrayUnsigned();
                client.Verifier = new FrameWork.NetWork.Crypto.BigInteger(client.Account.Verifier, 16);
                LOGIN_SALT.Send(client);
                return 0;
            }
            else
            {
                ANS_LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_LOGIN_APB_INACTIVATED);
                client.Disconnect();
                return 0;
            }
        }