diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 64e621d4cc73a277ed1a6da79bb2debfc5ea7a73..a931351feb3f9e84aecdac9b0ee4b4b4dc7e516a 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -121,6 +121,18 @@ class LLDispatchEstateUpdateInfo : public LLDispatchHandler
 		const sparam_t& strings);
 };
 
+class LLDispatchSetEstateAccess : public LLDispatchHandler
+{
+public:
+	LLDispatchSetEstateAccess() {}
+	virtual ~LLDispatchSetEstateAccess() {}
+	virtual bool operator()(
+		const LLDispatcher* dispatcher,
+		const std::string& key,
+		const LLUUID& invoice,
+		const sparam_t& strings);
+};
+
 class LLDispatchSetEstateExperience : public LLDispatchHandler
 {
 public:
@@ -1541,6 +1553,10 @@ void LLPanelEstateInfo::initDispatch(LLDispatcher& dispatch)
 	static LLDispatchEstateUpdateInfo estate_update_info;
 	dispatch.addHandler(name, &estate_update_info);
 
+	name.assign("setaccess");
+	static LLDispatchSetEstateAccess set_access;
+	dispatch.addHandler(name, &set_access);
+
 	name.assign("setexperience");
 	static LLDispatchSetEstateExperience set_experience;
 	dispatch.addHandler(name, &set_experience);
@@ -2315,6 +2331,21 @@ bool LLDispatchEstateUpdateInfo::operator()(
 	return true;
 }
 
+bool LLDispatchSetEstateAccess::operator()(
+	const LLDispatcher* dispatcher,
+	const std::string& key,
+	const LLUUID& invoice,
+	const sparam_t& strings)
+{
+	LLPanelEstateAccess* panel = LLFloaterRegionInfo::getPanelAccess();
+	if (panel && panel->getPendingUpdate())
+	{
+		panel->setPendingUpdate(false);
+		panel->updateLists();
+	}
+	return true;
+}
+
 LLSD LLDispatchSetEstateExperience::getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count )
 {
 	LLSD idList = LLSD::emptyArray();
@@ -3222,8 +3253,9 @@ void LLPanelRegionExperiences::itemChanged( U32 event_type, const LLUUID& id )
 }
 
 
-
-
+LLPanelEstateAccess::LLPanelEstateAccess()
+: LLPanelRegionInfo(), mPendingUpdate(false)
+{}
 
 BOOL LLPanelEstateAccess::postBuild()
 {
@@ -3771,7 +3803,13 @@ bool LLPanelEstateAccess::accessCoreConfirm(const LLSD& notification, const LLSD
 		iter++)
 	{
 		if (iter + 1 != end_it)
+		{
 			flags |= ESTATE_ACCESS_NO_REPLY;
+		}
+		else
+		{
+			flags &= ~ESTATE_ACCESS_NO_REPLY;
+		}
 
 		const LLUUID id = iter->asUUID();
 		if (((U32)notification["payload"]["operation"].asInteger() & ESTATE_ACCESS_BANNED_AGENT_ADD)
@@ -3795,6 +3833,11 @@ bool LLPanelEstateAccess::accessCoreConfirm(const LLSD& notification, const LLSD
 			names += av_name.getCompleteName();
 		}
 	}
+	LLPanelEstateAccess* panel = LLFloaterRegionInfo::getPanelAccess();
+	if (panel)
+	{
+		panel->setPendingUpdate(true);
+	}
 
 	if (!names.empty()) // show the conirmation
 	{
@@ -3869,13 +3912,6 @@ void LLPanelEstateAccess::sendEstateAccessDelta(U32 flags, const LLUUID& agent_o
 	msg->addString("Parameter", buf);
 
 	gAgent.sendReliableMessage();
-
-
-	LLPanelEstateAccess* panel = LLFloaterRegionInfo::getPanelAccess();
-	if (panel)
-	{
-		panel->updateLists();
-	}
 }
 
 void LLPanelEstateAccess::updateChild(LLUICtrl* child_ctrl)
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index 20ba3a7d9cf544ef976c50e940997ea8b23708fa..941c81fbec34ce62eeb3cf4cec374a1eebb1a443 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -488,12 +488,17 @@ class LLPanelEstateAccess : public LLPanelRegionInfo
 	LOG_CLASS(LLPanelEnvironmentInfo);
 
 public:
+	LLPanelEstateAccess();
+
 	virtual BOOL postBuild();
 	virtual void updateChild(LLUICtrl* child_ctrl);
 
 	void updateControls(LLViewerRegion* region);
 	void updateLists();
 
+	void setPendingUpdate(bool pending) { mPendingUpdate = pending; }
+	bool getPendingUpdate() { return mPendingUpdate; }
+
 private:
 	void onClickAddAllowedAgent();
 	void onClickRemoveAllowedAgent();
@@ -523,6 +528,8 @@ class LLPanelEstateAccess : public LLPanelRegionInfo
 	static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id);
 
 	static void requestEstateGetAccessCoro(std::string url);
+
+	bool mPendingUpdate;
 };
 
 #endif