static void SPAuthCheck_DNSCompletion(AsyncOp *theOp, SPAuthCheckPrv *theCheck)
{
	if(!theOp->Succeeded())
	{
		theCheck->mStatus = theOp->GetStatus();
		return;
	}

	// Step 2, AuthServer lookup
	ServerContextPtr aDirServers = new ServerContext;
	WONTypes::StringList::iterator anItr;
	for(anItr = theCheck->mDirServers.begin(); anItr != theCheck->mDirServers.end(); ++anItr)
		aDirServers->AddAddress(*anItr);

	GetMultiDirOpPtr anOp = new GetMultiDirOp(aDirServers);
	anOp->SetFlags(DIR_GF_DECOMPSERVICES | DIR_GF_SERVADDNETADDR);
	anOp->AddPath(L"/TitanServers/Auth");

	anOp->SetFlags(DIR_GF_DECOMPROOT | DIR_GF_ADDDODATA);
	if(theCheck->mCDKey.IsForceCheck())
		anOp->AddDataType("_SPF");
	else
		anOp->AddDataType("_SP");

	anOp->AddPath(theCheck->mProductDir);

	SPAuthCheck_RunOp(anOp,theCheck,SPAuthCheck_GetDirCompletion);
}
예제 #2
0
ServerContextPtr WONGetCurrentServerContext(const TWONServerList &lServers)
{
	// Get the server list
	ServerContextPtr cDirContext = new ServerContext;
	TWONServerList::const_iterator iCurDirServer = lServers.begin();
	for (; iCurDirServer != g_lWONServerList.end(); ++iCurDirServer)
	{
		cDirContext->AddAddress(IPAddr(*iCurDirServer));
	}

	return cDirContext;
}
ServerContextPtr MultiPingOp::GetServerContext(bool discardNonResponsiveServers)
{
	ServerContextPtr aContext = new ServerContext;
	MultiPingList::iterator anItr = mFinishedList.begin();
	while(anItr!=mFinishedList.end())
	{
		MultiPingStruct *aStruct = *anItr;
		if(aStruct->mPingTime!=-1 || !discardNonResponsiveServers)
			aContext->AddAddress(aStruct->mAddr);

		++anItr;
	}

	aContext->SetNeedShuffle(false);
	return aContext;
}