Heijden.DNS.Resolver.AddToCache C# (CSharp) Method

AddToCache() private method

private AddToCache ( Heijden.DNS.DNSResponse response, string questionKey ) : void
response Heijden.DNS.DNSResponse
questionKey string
return void
        private void AddToCache(DNSResponse response, string questionKey)
        {
            if (!m_UseCache)
            {
                return;
            }
            else if (questionKey.IsNullOrBlank())
            {
                throw new ApplicationException("Cannot add a DNS response to the cache with an empty question key.");
            }

            // Question question = response.Questions[0];

            //string questionKey = question.QClass + "-" + question.QType + "-" + question.QName;
            if (response.Answers.Count == 0)
            {
                response.Error = "DNS response had no answers.";
            }

            //if (response.header.RCODE != RCode.NOERROR || response.Error != null)
            if (response.Error != null)
            {
                // Cache error responses for a short period of time to avoid overloading the server with failing DNS lookups.
                logger.Debug("Caching DNS lookup failure for " + questionKey + " error was " + response.Error + ".");
                lock (m_lookupFailures)
                {
                    if (m_lookupFailures.ContainsKey(questionKey))
                    {
                        m_lookupFailures.Remove(questionKey);
                    }

                    m_lookupFailures.Add(questionKey, response);
                }
            }
            else if(!response.Timedout && response.Answers.Count > 0)
            {
                // Cache non-error responses.
                logger.Debug("Caching DNS lookup success for " + questionKey + ".");
                lock (m_ResponseCache)
                {
                    if (m_ResponseCache.ContainsKey(questionKey))
                    {
                        m_ResponseCache.Remove(questionKey);
                    }
                    m_ResponseCache.Add(questionKey, response);
                }
            }
        }