private bool CheckServerCapabilities()
        {
            if ((ServerStatus.Status == ServerStatusType.SHUTDOWN_STARTED ||
                 ServerStatus.Status == ServerStatusType.MAINTENANCE) && !EnvironmentSettings.IsDeveloperIP(this.m_connection.ClientIP.ToString()))
            {
                LoginFailedMessage loginFailedMessage = new LoginFailedMessage();
                loginFailedMessage.SetErrorCode(LoginFailedMessage.ErrorCode.SERVER_MAINTENANCE);
                loginFailedMessage.SetEndMaintenanceTime(LogicMath.Max(ServerStatus.Time + ServerStatus.NextTime - TimeUtil.GetTimestamp(), 0));
                this.SendMessage(loginFailedMessage);
                return(false);
            }

            if (ProxySessionManager.Count >= EnvironmentSettings.Settings.Proxy.SessionCapacity)
            {
                LoginFailedMessage loginFailedMessage = new LoginFailedMessage();
                loginFailedMessage.SetErrorCode((LoginFailedMessage.ErrorCode) 1000);
                loginFailedMessage.SetReason("The servers are not able to connect you at this time. Try again in a few minutes.");
                this.SendMessage(loginFailedMessage);
                return(false);
            }

            return(true);
        }