Bug 986081 Part 0 - Fix a hang when canceling an InetBgDl request. r?agashlin draft
authorMatt Howell <mhowell@mozilla.com>
Tue, 20 Mar 2018 15:32:43 -0700
changeset 774958 1f0c819ec9e8076a63cbbd8087836de438e79300
parent 774938 a8c10954d01c57ef25acab7d178c8469c66d2680
child 774959 3d6a7739b9f023f46110815f819a797798c71921
push id104576
push usermhowell@mozilla.com
push dateThu, 29 Mar 2018 22:01:29 +0000
reviewersagashlin
bugs986081
milestone61.0a1
Bug 986081 Part 0 - Fix a hang when canceling an InetBgDl request. r?agashlin This fixes a bug which the main bug 986081 patch exposes because it tries to cancel a download in InetBgDl and then show a dialog box immediately afterward. Without this patch, doing that very early on in the request (meaning before any redirect is fully handled) would result in a 10 second UI hang. MozReview-Commit-ID: 1zBxZrllFC
other-licenses/nsis/Contrib/InetBgDL/InetBgDL.cpp
other-licenses/nsis/Plugins/InetBgDL.dll
--- a/other-licenses/nsis/Contrib/InetBgDL/InetBgDL.cpp
+++ b/other-licenses/nsis/Contrib/InetBgDL/InetBgDL.cpp
@@ -132,25 +132,30 @@ UINT_PTR __cdecl NSISPluginCallback(UINT
 }
 
 void __stdcall InetStatusCallback(HINTERNET hInternet, DWORD_PTR dwContext,
                                   DWORD dwInternetStatus,
                                   LPVOID lpvStatusInformation,
                                   DWORD dwStatusInformationLength)
 {
   if (dwInternetStatus == INTERNET_STATUS_NAME_RESOLVED) {
-    // The documentation states the IP address is a PCTSTR but it is usually a
-    // PCSTR and only sometimes a PCTSTR.
-    StatsLock_AcquireExclusive();
-    wsprintf(g_ServerIP, _T("%S"), lpvStatusInformation);
-    if (wcslen(g_ServerIP) == 1)
-    {
-      wsprintf(g_ServerIP, _T("%s"), lpvStatusInformation);
+    // If we're in the process of being reset, don't try to update g_ServerIP;
+    // there's no need for it, and Reset() will be holding the StatsLock, so
+    // we'll hang here and block the reset if we try to acquire it.
+    if (g_FilesTotal != 0) {
+      // The documentation states the IP address is a PCTSTR but it is usually a
+      // PCSTR and only sometimes a PCTSTR.
+      StatsLock_AcquireExclusive();
+      wsprintf(g_ServerIP, _T("%S"), lpvStatusInformation);
+      if (wcslen(g_ServerIP) == 1)
+      {
+        wsprintf(g_ServerIP, _T("%s"), lpvStatusInformation);
+      }
+      StatsLock_ReleaseExclusive();
     }
-    StatsLock_ReleaseExclusive();
   }
 
 #if defined(PLUGIN_DEBUG)
   switch (dwInternetStatus)
   {
     case INTERNET_STATUS_RESOLVING_NAME:
       TRACE(_T("InetBgDl: INTERNET_STATUS_RESOLVING_NAME (%d), name=%s\n"),
             dwStatusInformationLength, lpvStatusInformation);
index 824420bebcf01af9f9dd88bbba9e9bc240d6ab01..6094d866898deb1375a5484e4138ec9fedfac657
GIT binary patch
literal 33792
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
OeEWR+eEa+tKmQMxRoGSl