Automated merge with ssh://bitbucket.org/lindenlab/sunshine-internal

meow-7.2.2
Logan Dethrow 2013-03-28 18:08:11 -04:00
commit 203da72c5f
5 changed files with 70 additions and 24 deletions

View File

@ -43,9 +43,7 @@
<key>tags</key>
<array>
<string>Avatar</string>
<!-- sample entry for debugging specific items
<string>Voice</string>
-->
<string>CrossingCaps</string>
</array>
</map>
</array>

View File

@ -1279,6 +1279,8 @@ bool idle_startup()
LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(gFirstSimHandle);
LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL;
LL_DEBUGS("CrossingCaps") << "Calling setSeedCapability from init_idle(). Seed cap == "
<< gFirstSimSeedCap << LL_ENDL;
regionp->setSeedCapability(gFirstSimSeedCap);
LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL;
display_startup();

View File

@ -3956,6 +3956,8 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
gAgent.setTeleportState( LLAgent::TELEPORT_MOVING );
gAgent.setTeleportMessage(LLAgent::sTeleportProgressMessages["contacting"]);
LL_DEBUGS("CrossingCaps") << "Calling setSeedCapability from process_teleport_finish(). Seed cap == "
<< seedCap << LL_ENDL;
regionp->setSeedCapability(seedCap);
// Don't send camera updates to the new region until we're
@ -4210,6 +4212,9 @@ void process_crossed_region(LLMessageSystem* msg, void**)
send_complete_agent_movement(sim_host);
LLViewerRegion* regionp = LLWorld::getInstance()->addRegion(region_handle, sim_host);
LL_DEBUGS("CrossingCaps") << "Calling setSeedCapability from process_crossed_region(). Seed cap == "
<< seedCap << LL_ENDL;
regionp->setSeedCapability(seedCap);
}

View File

@ -87,6 +87,8 @@ const S32 MAX_CAP_REQUEST_ATTEMPTS = 30;
typedef std::map<std::string, std::string> CapabilityMap;
static void logCapabilities(const CapabilityMap &capmap);
class LLViewerRegionImpl {
public:
LLViewerRegionImpl(LLViewerRegion * region, LLHost const & host)
@ -321,17 +323,36 @@ private:
if ( regionp->getRegionImpl()->mCapabilities.size() != regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() )
{
LL_WARNS2("AppInit", "Capabilities")
<< "Sim sent duplicate seed caps that differs in size - most likely content." << LL_ENDL;
//todo#add cap debug versus original check?
/*CapabilityMap::const_iterator iter = regionp->getRegionImpl()->mCapabilities.begin();
while (iter!=regionp->getRegionImpl()->mCapabilities.end() )
{
llinfos<<"BaseCapabilitiesCompleteTracker Original "<<iter->first<<" "<< iter->second<<llendl;
++iter;
}
*/
<< "Sim sent duplicate base caps that differ in size from what we initially received - most likely content. "
<< "mCapabilities == " << regionp->getRegionImpl()->mCapabilities.size()
<< " mSecondCapabilitiesTracker == " << regionp->getRegionImpl()->mSecondCapabilitiesTracker.size()
<< LL_ENDL;
//LL_WARNS2("AppInit", "Capabilities")
// << "Initial Base capabilities: " << LL_ENDL;
//logCapabilities(regionp->getRegionImpl()->mCapabilities);
//LL_WARNS2("AppInit", "Capabilities")
// << "Latest base capabilities: " << LL_ENDL;
//logCapabilities(regionp->getRegionImpl()->mSecondCapabilitiesTracker);
// *TODO
//add cap debug versus original check?
//CapabilityMap::const_iterator iter = regionp->getRegionImpl()->mCapabilities.begin();
//while (iter!=regionp->getRegionImpl()->mCapabilities.end() )
//{
// llinfos<<"BaseCapabilitiesCompleteTracker Original "<<iter->first<<" "<< iter->second<<llendl;
// ++iter;
//}
regionp->getRegionImplNC()->mSecondCapabilitiesTracker.clear();
}
else
{
LL_DEBUGS("CrossingCaps") << "Sim sent multiple base cap grants with matching sizes." << LL_ENDL;
}
}
@ -1671,7 +1692,9 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
{
if (getCapability("Seed") == url)
{
//llwarns << "Ignoring duplicate seed capability" << llendl;
setCapabilityDebug("Seed", url);
LL_DEBUGS("CrossingCaps") << "Received duplicate seed capability, posting to seed " <<
url << llendl;
//Instead of just returning we build up a second set of seed caps and compare them
//to the "original" seed cap received and determine why there is problem!
LLSD capabilityNames = LLSD::emptyArray();
@ -1821,7 +1844,16 @@ void LLViewerRegion::setCapability(const std::string& name, const std::string& u
void LLViewerRegion::setCapabilityDebug(const std::string& name, const std::string& url)
{
mImpl->mSecondCapabilitiesTracker[name] = url;
// Continue to not add certain caps, as we do in setCapability. This is so they match up when we check them later.
if ( ! ( name == "EventQueueGet" || name == "UntrustedSimulatorMessage" || name == "SimulatorFeatures" ) )
{
mImpl->mSecondCapabilitiesTracker[name] = url;
if(name == "GetTexture")
{
mHttpUrl = url ;
}
}
}
bool LLViewerRegion::isSpecialCapabilityName(const std::string &name)
@ -1872,16 +1904,7 @@ boost::signals2::connection LLViewerRegion::setCapabilitiesReceivedCallback(cons
void LLViewerRegion::logActiveCapabilities() const
{
int count = 0;
CapabilityMap::const_iterator iter;
for (iter = mImpl->mCapabilities.begin(); iter != mImpl->mCapabilities.end(); ++iter, ++count)
{
if (!iter->second.empty())
{
llinfos << iter->first << " URL is " << iter->second << llendl;
}
}
llinfos << "Dumped " << count << " entries." << llendl;
logCapabilities(mImpl->mCapabilities);
}
LLSpatialPartition* LLViewerRegion::getSpatialPartition(U32 type)
@ -1965,3 +1988,19 @@ bool LLViewerRegion::dynamicPathfindingEnabled() const
mSimulatorFeatures["DynamicPathfindingEnabled"].asBoolean());
}
/* Static Functions */
void logCapabilities(const CapabilityMap &capmap)
{
S32 count = 0;
CapabilityMap::const_iterator iter;
for (iter = capmap.begin(); iter != capmap.end(); ++iter, ++count)
{
if (!iter->second.empty())
{
llinfos << "logCapabilities: " << iter->first << " URL is " << iter->second << llendl;
}
}
llinfos << "logCapabilities: Dumped " << count << " entries." << llendl;
}

View File

@ -1065,6 +1065,8 @@ public:
<< sim << llendl;
return;
}
LL_DEBUGS("CrossingCaps") << "Calling setSeedCapability from LLEstablishAgentCommunication::post. Seed cap == "
<< input["body"]["seed-capability"] << LL_ENDL;
regionp->setSeedCapability(input["body"]["seed-capability"]);
}
};