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