From a905f7c74ee35ac16237311eb1d0fbda6577aadb Mon Sep 17 00:00:00 2001
From: Chris Baker <baker@lindenlab.com>
Date: Wed, 3 Oct 2012 21:16:04 +0000
Subject: [PATCH] - Fixed an issue where group list wouldn't fall back to UDP
 if the region doesn't support the new GroupMemberData capabaility - Fixed a
 potential null pointer crash.

Thanks to Ansariel from Firestorm for these!

Reviewer: Myself
---
 indra/newview/llgroupmgr.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 9c0a30e6892..6916cf813a5 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -1867,6 +1867,12 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id)
 		return;
 	
 	LLViewerRegion* currentRegion = gAgent.getRegion();
+	// Thank you FS:Ansariel!
+	if(!currentRegion)
+	{
+		LL_WARNS("GrpMgr") << "Agent does not have a current region. Uh-oh!" << LL_ENDL;
+		return;
+	}
 
 	// Check to make sure we have our capabilities
 	if(!currentRegion->capabilitiesReceived())
@@ -1878,6 +1884,14 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id)
 	// Get our capability
 	std::string cap_url =  currentRegion->getCapability("GroupMemberData");
 
+	// Thank you FS:Ansariel!
+	if(cap_url.empty())
+	{
+		LL_INFOS("GrpMgr") << "Region has no GroupMemberData capability.  Falling back to UDP fetch." << LL_ENDL;
+		sendGroupMembersRequest(group_id);
+		return;
+	}
+
 	// Post to our service.  Add a body containing the group_id.
 	LLSD body = LLSD::emptyMap();
 	body["group_id"]	= group_id;
-- 
GitLab