Title: [242367] trunk/Source/WebKit
Revision
242367
Author
achristen...@apple.com
Date
2019-03-04 11:54:21 -0800 (Mon, 04 Mar 2019)

Log Message

REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
https://bugs.webkit.org/show_bug.cgi?id=194523

Reviewed by Ryosuke Niwa.

Attempt to work around a CFNetwork bug in the timing of tearing down tasks with upload streams.
See rdar://problem/28233746.

* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (242366 => 242367)


--- trunk/Source/WebKit/ChangeLog	2019-03-04 19:33:04 UTC (rev 242366)
+++ trunk/Source/WebKit/ChangeLog	2019-03-04 19:54:21 UTC (rev 242367)
@@ -1,3 +1,19 @@
+2019-03-04  Alex Christensen  <achristen...@webkit.org>
+
+        REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
+        https://bugs.webkit.org/show_bug.cgi?id=194523
+
+        Reviewed by Ryosuke Niwa.
+
+        Attempt to work around a CFNetwork bug in the timing of tearing down tasks with upload streams.
+        See rdar://problem/28233746.
+
+        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
+        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+        (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]):
+
 2019-03-04  Carlos Garcia Campos  <cgar...@igalia.com>
 
         [CoordinatedGraphics] The compositing loop is still running even after exiting AC mode

Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h (242366 => 242367)


--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h	2019-03-04 19:33:04 UTC (rev 242366)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h	2019-03-04 19:54:21 UTC (rev 242367)
@@ -83,6 +83,8 @@
 
     String description() const override;
 
+    void setShouldExtendTaskLifetime(bool shouldExtendTaskLifetime) { m_shouldExtendTaskLifetime = shouldExtendTaskLifetime; }
+
 private:
     NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly, bool dataTaskIsForMainFrameNavigation, Optional<NetworkActivityTracker>);
 
@@ -104,6 +106,9 @@
     uint64_t m_frameID;
     uint64_t m_pageID;
 
+    // FIXME: This is only needed until rdar://problem/28233746 is fixed.
+    bool m_shouldExtendTaskLifetime { false };
+
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
     bool m_hasBeenSetToUseStatelessCookieStorage { false };
 #endif

Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (242366 => 242367)


--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2019-03-04 19:33:04 UTC (rev 242366)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2019-03-04 19:54:21 UTC (rev 242367)
@@ -261,6 +261,9 @@
         ASSERT(cocoaSession.m_dataTaskMapWithoutState.get([m_task taskIdentifier]) == this);
         cocoaSession.m_dataTaskMapWithoutState.remove([m_task taskIdentifier]);
     }
+    
+    if (m_shouldExtendTaskLifetime)
+        RunLoop::main().dispatch([task = WTFMove(m_task)] { });
 }
 
 void NetworkDataTaskCocoa::restrictRequestReferrerToOriginIfNeeded(WebCore::ResourceRequest& request, bool shouldBlockCookies)

Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (242366 => 242367)


--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2019-03-04 19:33:04 UTC (rev 242366)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2019-03-04 19:54:21 UTC (rev 242367)
@@ -383,6 +383,7 @@
         return;
     }
 
+    networkDataTask->setShouldExtendTaskLifetime(true);
     completionHandler(WebCore::createHTTPBodyNSInputStream(*body).get());
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to