diff --git a/.hgtags b/.hgtags
index 96ea267be3cd400e3ced4817df5ade594a001e0b..d440a39e8e16ae37baab003fdcc118ad5a5eebff 100755
--- a/.hgtags
+++ b/.hgtags
@@ -548,3 +548,4 @@ a3143db58a0f6b005232bf9018e7fef17ff9ec90 6.1.0-release
 50f0ece62ddb5a244ecb6d00ef5a89d80ad50efa 6.1.1-release
 82a89165e5929a6c3073d6cd60a543cb395f147b 6.2.0-release
 706bdc7e25c6e6b8fb56f4a13fcce2936e70a79c 6.2.1-release
+ec09daf1899c1c01c4ba0ba950fae572f2a612a8 6.2.2-release
diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h
index 5d60c63810128446c02f4e6aeb0a1bf8ec185d7b..62d97007acde21edaa5b09ba3c0ec573c7472c45 100644
--- a/indra/llcommon/llevents.h
+++ b/indra/llcommon/llevents.h
@@ -582,11 +582,12 @@ class LL_COMMON_API LLEventPump: public LLEventTrackable
     /// Generate a distinct name for a listener -- see listen()
     static std::string inventName(const std::string& pfx="listener");
 
-private:
-    friend class LLEventPumps;
     /// flush queued events
     virtual void flush() {}
 
+private:
+    friend class LLEventPumps;
+
     virtual void reset();
 
 
@@ -675,12 +676,14 @@ class LL_COMMON_API LLEventMailDrop : public LLEventStream
     virtual ~LLEventMailDrop() {}
     
     /// Post an event to all listeners
-    virtual bool post(const LLSD& event);
+    virtual bool post(const LLSD& event) override;
     
+    /// Remove any history stored in the mail drop.
+    virtual void flush() override { mEventHistory.clear(); LLEventStream::flush(); };
 protected:
     virtual LLBoundListener listen_impl(const std::string& name, const LLEventListener&,
                                         const NameList& after,
-                                        const NameList& before);
+                                        const NameList& before) override;
 
 private:
     typedef std::list<LLSD> EventList;
@@ -703,7 +706,6 @@ class LL_COMMON_API LLEventQueue: public LLEventPump
     /// Post an event to all listeners
     virtual bool post(const LLSD& event);
 
-private:
     /// flush queued events
     virtual void flush();
 
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index ca06394388d6b01813d8b1a3da0749e5f73ef661..bee94338174294154562473645fdffd1d018a1d8 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-6.2.2
+6.2.3
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index d0fbf17d81be484d478023a9f261f29f7a48dc13..be5611899ae2ab9c42dddaa3ae0279f255e07ef6 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -3100,17 +3100,11 @@ LLSD LLAppViewer::getViewerInfo() const
     }
 
 	// return a URL to the release notes for this viewer, such as:
-	// http://wiki.secondlife.com/wiki/Release_Notes/Second Life Beta Viewer/2.1.0.123456
+	// https://releasenotes.secondlife.com/viewer/2.1.0.123456.html
 	std::string url = LLTrans::getString("RELEASE_NOTES_BASE_URL");
 	if (! LLStringUtil::endsWith(url, "/"))
 		url += "/";
-	std::string channel = LLVersionInfo::getChannel();
-	if (LLStringUtil::endsWith(boost::to_lower_copy(channel), " edu")) // Release Notes url shouldn't include the EDU parameter
-	{
-		boost::erase_tail(channel, 4);
-	}
-	url += LLURI::escape(channel) + "/";
-	url += LLURI::escape(LLVersionInfo::getVersion());
+	url += LLURI::escape(LLVersionInfo::getVersion()) + ".html";
 
 	info["VIEWER_RELEASE_NOTES_URL"] = url;
 
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index ae4b06533327b611265e57761bd55434b7082244..e10ba77e16ba71883ffdb7ab8e6e95ef75d0ac49 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -1480,6 +1480,11 @@ bool LLVivoxVoiceClient::addAndJoinSession(const sessionStatePtr_t &nextSession)
 
     LLSD timeoutResult(LLSDMap("session", "timeout"));
 
+    // We are about to start a whole new session.  Anything that MIGHT still be in our 
+    // maildrop is going to be stale and cause us much wailing and gnashing of teeth.  
+    // Just flush it all out and start new.
+    voicePump.flush();
+
     // It appears that I need to wait for BOTH the SessionGroup.AddSession response and the SessionStateChangeEvent with state 4
     // before continuing from this state.  They can happen in either order, and if I don't wait for both, things can get stuck.
     // For now, the SessionGroup.AddSession response handler sets mSessionHandle and the SessionStateChangeEvent handler transitions to stateSessionJoined.
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index 74d160dfaec1ccb5cb20e1bac7f5a6edc0da5f63..eee3dc2c77792f04b43cf10feb96fbcc3373f503 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -432,7 +432,7 @@ Prøv venligst om lidt igen.
 		Noter om version
 	</string>
 	<string name="RELEASE_NOTES_BASE_URL">
-		http://wiki.secondlife.com/wiki/Release_Notes/
+		https://releasenotes.secondlife.com/viewer/
 	</string>
 	<string name="LoadingData">
 		Henter...
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 6e980d1609c4f290bf828d3d6bf15c98339eaf20..95eb88614b123387d43221397e06b0a6a661a7e9 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -648,7 +648,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 		Versionshinweise
 	</string>
 	<string name="RELEASE_NOTES_BASE_URL">
-		http://wiki.secondlife.com/wiki/Release_Notes/
+		https://releasenotes.secondlife.com/viewer/
 	</string>
 	<string name="LoadingData">
 		Wird geladen...
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 982e26ae581da68b30c0d760db55b4ce743d43a5..8fa339a946c3ac57ec72e09865f6525cb0285081 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -321,7 +321,7 @@ Please try logging in again in a minute.</string>
 
 	<string name="ReleaseNotes">Release Notes</string>
 	<!-- Always mark translate="false" for strings that are nothing but URLs, as they don't need translation. -->
-	<string name="RELEASE_NOTES_BASE_URL" translate="false">http://wiki.secondlife.com/wiki/Release_Notes/</string>
+	<string name="RELEASE_NOTES_BASE_URL" translate="false">https://releasenotes.secondlife.com/viewer/</string>
 
 	<!-- Indicates something is being loaded. Maybe should be merged with RetrievingData -->
 	<string name="LoadingData">Loading...</string>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 68cd72802d37c9b25070e58feb1159970974d988..1b066756708ce930379adef2c08a621429431ae1 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -640,7 +640,7 @@ Intenta iniciar sesión de nuevo en unos instantes.
 		Notas de la versión
 	</string>
 	<string name="RELEASE_NOTES_BASE_URL">
-		http://wiki.secondlife.com/wiki/Release_Notes/
+		https://releasenotes.secondlife.com/viewer/
 	</string>
 	<string name="LoadingData">
 		Cargando...
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 9cd577010863c20ca4f0e5ced2974553fb0d63a4..dbd5cc3bf46df07698706f920add5967aad85df5 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -649,7 +649,7 @@ Veuillez réessayer de vous connecter dans une minute.
 		Notes de version
 	</string>
 	<string name="RELEASE_NOTES_BASE_URL">
-		http://wiki.secondlife.com/wiki/Release_Notes/
+		https://releasenotes.secondlife.com/viewer/
 	</string>
 	<string name="LoadingData">
 		Chargement...
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 0ea6bd5d22d183132fa37170c651473a9298ee57..9492d062c3a162a5e8b704880d56c1500224f255 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -645,7 +645,7 @@ Prova ad accedere nuovamente tra un minuto.
 		Note sulla versione
 	</string>
 	<string name="RELEASE_NOTES_BASE_URL">
-		http://wiki.secondlife.com/wiki/Release_Notes/
+		https://releasenotes.secondlife.com/viewer/
 	</string>
 	<string name="LoadingData">
 		In caricamento...
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 497ea649d1ff87fd087d8fe3e84059e332b55d9b..91d31faa766061914755ee71a47c3183cde1dc5e 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -648,7 +648,7 @@ support@secondlife.com にお問い合わせください。
 		リリースノート
 	</string>
 	<string name="RELEASE_NOTES_BASE_URL">
-		http://wiki.secondlife.com/wiki/Release_Notes/
+		https://releasenotes.secondlife.com/viewer/
 	</string>
 	<string name="LoadingData">
 		ローディング...
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 30751134800e074f0d380372616abb0f324586fe..c4fbf1f4c99b92c4e09de96ec7f813802805edcd 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -605,7 +605,7 @@ Aguarde um minuto antes que tentar logar-se novamente.
 		Notas de versão
 	</string>
 	<string name="RELEASE_NOTES_BASE_URL">
-		http://wiki.secondlife.com/wiki/Release_Notes/
+		https://releasenotes.secondlife.com/viewer/
 	</string>
 	<string name="LoadingData">
 		Carregando...