diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index e9f31661c7a12b6b6e47cd8450ce8d3e5917d046..099319a1167d59cb9bd3aa8a5b194dfe0de57d09 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -153,7 +153,7 @@ bool LLURLDispatcherImpl::dispatchApp(const LLSLURL& slurl,
 									  bool trusted_browser)
 {
 	LL_INFOS() << "cmd: " << slurl.getAppCmd() << " path: " << slurl.getAppPath() << " query: " << slurl.getAppQuery() << LL_ENDL;
-	const LLSD& query_map = LLURI::queryMap(slurl.getAppQuery());
+	const LLSD& query_map = slurl.getAppQueryMap();
 	bool handled = LLCommandDispatcher::dispatch(
 			slurl.getAppCmd(), slurl.getAppPath(), query_map, web, nav_type, trusted_browser);
 
@@ -214,8 +214,9 @@ void LLURLDispatcherImpl::regionHandleCallback(U64 region_handle, const LLSLURL&
 {
 
   // we can't teleport cross grid at this point
-	if(   LLGridManager::getInstance()->getGrid(slurl.getGrid())
-	   != LLGridManager::getInstance()->getGrid())
+	if(LLGridManager::instance().isInSecondlife() &&
+		(LLGridManager::getInstance()->getGrid(slurl.getGrid())
+	   != LLGridManager::getInstance()->getGrid()))
 	{
 		LLSD args;
 		args["SLURL"] = slurl.getLocationString();