System.Net.Cache.FtpRequestCacheValidator.ValidateResponse C# (CSharp) Method

ValidateResponse() protected method

protected ValidateResponse ( ) : CacheValidationStatus
return CacheValidationStatus
        protected internal override CacheValidationStatus ValidateResponse()
        {
            if (HttpProxyMode)
                return base.ValidateResponse();

            if (Policy.Level != RequestCacheLevel.Default && Policy.Level != RequestCacheLevel.Revalidate)
            {
                // Those policy levels do not modify requests
                if(Logging.On)Logging.PrintInfo(Logging.RequestCache, SR.GetString(SR.net_log_cache_response_valid_based_on_policy, Policy.ToString()));
                return CacheValidationStatus.Continue;
            }

            FtpWebResponse resp = Response as FtpWebResponse;

            if (resp == null) {
                if(Logging.On)Logging.PrintWarning(Logging.RequestCache, SR.GetString(SR.net_log_cache_null_response_failure));
                return CacheValidationStatus.Continue;
            }

            if(Logging.On) Logging.PrintInfo(Logging.RequestCache, SR.GetString(SR.net_log_cache_ftp_response_status, ((int)resp.StatusCode).ToString(CultureInfo.InvariantCulture), resp.StatusCode.ToString()));

            // If there was a retry already, it should go with cache disabled so by default we won't retry it again
            if (ResponseCount > 1) {
                if(Logging.On)Logging.PrintInfo(Logging.RequestCache, SR.GetString(SR.net_log_cache_resp_valid_based_on_retry, ResponseCount));
                return CacheValidationStatus.Continue;
            }

            if (resp.StatusCode != FtpStatusCode.OpeningData && resp.StatusCode != FtpStatusCode.FileStatus)
            {
                return CacheValidationStatus.RetryResponseFromServer;
            }
            return CacheValidationStatus.Continue;
        }