Title: [200152] trunk/Source/WebKit2
Revision
200152
Author
[email protected]
Date
2016-04-27 14:39:10 -0700 (Wed, 27 Apr 2016)

Log Message

Remove download message receiver when NetworkProcess crashes
https://bugs.webkit.org/show_bug.cgi?id=157102
<rdar://problem/25550106>

Reviewed by Anders Carlsson.

* UIProcess/Downloads/DownloadProxyMap.cpp:
(WebKit::DownloadProxyMap::processDidClose):
When the NetworkProcess crashes during a download, we want to remove the message receiver from the map
so we don't get an assertion in ~MessageReceiver in the UIProcess so we do not have a freed
message receiver in the map.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (200151 => 200152)


--- trunk/Source/WebKit2/ChangeLog	2016-04-27 21:25:15 UTC (rev 200151)
+++ trunk/Source/WebKit2/ChangeLog	2016-04-27 21:39:10 UTC (rev 200152)
@@ -1,5 +1,19 @@
 2016-04-27  Alex Christensen  <[email protected]>
 
+        Remove download message receiver when NetworkProcess crashes
+        https://bugs.webkit.org/show_bug.cgi?id=157102
+        <rdar://problem/25550106>
+
+        Reviewed by Anders Carlsson.
+
+        * UIProcess/Downloads/DownloadProxyMap.cpp:
+        (WebKit::DownloadProxyMap::processDidClose):
+        When the NetworkProcess crashes during a download, we want to remove the message receiver from the map
+        so we don't get an assertion in ~MessageReceiver in the UIProcess so we do not have a freed
+        message receiver in the map.
+
+2016-04-27  Alex Christensen  <[email protected]>
+
         Fix client certificate authentication with NSURLSession on iOS
         https://bugs.webkit.org/show_bug.cgi?id=157094
         <rdar://problem/25946859>

Modified: trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp (200151 => 200152)


--- trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp	2016-04-27 21:25:15 UTC (rev 200151)
+++ trunk/Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp	2016-04-27 21:39:10 UTC (rev 200152)
@@ -68,13 +68,14 @@
 void DownloadProxyMap::processDidClose()
 {
     // Invalidate all outstanding downloads.
-    for (auto it = m_downloads.begin().values(), end = m_downloads.end().values(); it != end; ++it) {
-        (*it)->processDidClose();
-        (*it)->invalidate();
+    for (const auto& download : m_downloads.values()) {
+        download->processDidClose();
+        download->invalidate();
+        m_process->removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), download->downloadID().downloadID());
     }
 
     m_downloads.clear();
-    m_process = 0;
+    m_process = nullptr;
 }
 
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to