Class CTraceRouteSocketReverseDNS::
DNSResolving()
Base ClassesData ItemsConstructorsDestructorsFunctionsCustom CodeGo to hierarchy chart    Prev page: ~CTraceRouteSocketReverseDNSNext page: DNSTraceDone    Show member index
Private Function Declared in:
TraceRouteSocketReverseDNS.h

'Declaration' icon -- Shortcut to top of page. Declaration

static DWORD DNSResolving(
    LPVOID lpData);

'Description' icon -- Shortcut to top of page. Description

Thread for DNS

'Function Body' icon -- Shortcut to top of page. Function Body

try
{
    //Get the class
    CTraceRouteSocketReverseDNS* pClass;
    pClass=(CTraceRouteSocketReverseDNS*)lpData;

    //Start iterating the data
    TraceRouteVector aData;
    pClass->TakeData(aData);

    CTraceRouteSocket::TraceRouteVector::const_iterator aIterator=aData.begin();

    //Iterate it
    while (aIterator!=aData.end())
    {
        //Save the data
        DNSTraceRouteData aDNSData;
        aDNSData.aReplyingAddress=aIterator->aReplyingAddress;
        aDNSData.bTimeout=aIterator->bTimeout;
        aDNSData.dwElapsedTime=aIterator->dwElapsedTime;
        aDNSData.ucTTL=aIterator->ucTTL;

        //Is it a timeout
        if (!aIterator->bTimeout)
        {
            //Query the DNS
            if (!pClass->m_pDNSManager->GetDNSEntry(aDNSData.aReplyingAddress))
                ReportStaticError(CTraceRouteSocketReverseDNS_Class,"DNSResolving","Failed to query DNS!");
            else
            {
                //Get the DNS answer
                KomodiaDNS::CDNSAnswers* pAnswers;
                pAnswers=pClass->m_pDNSManager->Receive();

                //Do we have it
                if (!pAnswers)
                    ReportStaticError(CTraceRouteSocketReverseDNS_Class,"DNSResolving","Failed to query DNS!");
                else if (pAnswers->IsResolved())
                    aDNSData.sReverseDNS=pAnswers->GetAnswer();
            }
        }

        //Add the data
        pClass->m_aData.push_back(aDNSData);

        //Increase the iterator
        ++aIterator;
    }

    //Indicate trace is done
    pClass->m_bTraceDone=TRUE;

    //Call the trace is done
    pClass->DNSTraceDone();

    //Done
    return TRUE;
}
ERROR_HANDLER_STATIC_RETURN(CTraceRouteSocketReverseDNS_Class,"DNSResolving",THREAD_DO_NOTHING_EXIT_VALUE)

'See Also' icon -- Shortcut to top of page. See Also

Class Overview Class Overview  |  Public base class CTraceRouteSocket  |  Hierarchy Chart Hierarchy Chart


Get Surveyor!This web site was generated using Surveyor V4.50.811.1.  Click here for more information. Site content copyright © 2003 Komodia LTD.. See the About page for additional notices. This page last updated: 24 Feb 2003.