Title: [174280] branches/safari-600.1.4.11-branch/Source/WebCore
- Revision
- 174280
- Author
- bshaf...@apple.com
- Date
- 2014-10-03 13:15:44 -0700 (Fri, 03 Oct 2014)
Log Message
Merged r174244. <rdar://problem/18507382>
Modified Paths
Diff
Modified: branches/safari-600.1.4.11-branch/Source/WebCore/ChangeLog (174279 => 174280)
--- branches/safari-600.1.4.11-branch/Source/WebCore/ChangeLog 2014-10-03 20:10:56 UTC (rev 174279)
+++ branches/safari-600.1.4.11-branch/Source/WebCore/ChangeLog 2014-10-03 20:15:44 UTC (rev 174280)
@@ -1,3 +1,29 @@
+2014-10-03 Babak Shafiei <bshaf...@apple.com>
+
+ Merge r174244.
+
+ 2014-10-02 Pratik Solanki <psola...@apple.com>
+
+ [iOS] Networking process stops loading web pages while running Alexa test with random URL list
+ https://bugs.webkit.org/show_bug.cgi?id=137362
+ <rdar://problem/18507382>
+
+ Reviewed by Alexey Proskuryakov.
+
+ ResourceHandleCFURLConnectionDelegateWithOperationQueue needs to signal threads waiting on
+ its semaphore when the handle is being destroyed. Otherwise, we can leave dispatch threads
+ hanging around waiting for a response. This can happen when the Web Content process dies.
+ Any thread/queue waiting on a response from that web process will leak and stay around
+ forever. If we reach the dispatch queue limit of 64, then all networking will cease to
+ happen in the Networking process. Fix this by signalling waiting threads and clearing out
+ our state in much the same way that -[WebCoreResourceHandleAsOperationQueueDelegate
+ detachHandle] does for Mac.
+
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
+ (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::releaseHandle):
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:
+
2014-10-02 Babak Shafiei <bshaf...@apple.com>
Merge r174199.
Modified: branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h (174279 => 174280)
--- branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h 2014-10-03 20:10:56 UTC (rev 174279)
+++ branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h 2014-10-03 20:15:44 UTC (rev 174280)
@@ -45,7 +45,7 @@
CFURLConnectionClient_V6 makeConnectionClient() const;
virtual void setupRequest(CFMutableURLRequestRef) = 0;
virtual void setupConnectionScheduling(CFURLConnectionRef) = 0;
- void releaseHandle();
+ virtual void releaseHandle();
virtual void continueWillSendRequest(CFURLRequestRef) = 0;
virtual void continueDidReceiveResponse() = 0;
Modified: branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp (174279 => 174280)
--- branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2014-10-03 20:10:56 UTC (rev 174279)
+++ branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2014-10-03 20:15:44 UTC (rev 174280)
@@ -63,6 +63,15 @@
return !!m_handle;
}
+void ResourceHandleCFURLConnectionDelegateWithOperationQueue::releaseHandle()
+{
+ ResourceHandleCFURLConnectionDelegate::releaseHandle();
+ m_requestResult = nullptr;
+ m_cachedResponseResult = nullptr;
+ m_boolResult = false;
+ dispatch_semaphore_signal(m_semaphore);
+}
+
void ResourceHandleCFURLConnectionDelegateWithOperationQueue::setupRequest(CFMutableURLRequestRef request)
{
#if PLATFORM(IOS)
Modified: branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h (174279 => 174280)
--- branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h 2014-10-03 20:10:56 UTC (rev 174279)
+++ branches/safari-600.1.4.11-branch/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h 2014-10-03 20:15:44 UTC (rev 174280)
@@ -45,6 +45,7 @@
virtual void setupRequest(CFMutableURLRequestRef) override;
virtual void setupConnectionScheduling(CFURLConnectionRef) override;
+ virtual void releaseHandle() override;
virtual CFURLRequestRef willSendRequest(CFURLRequestRef, CFURLResponseRef) override;
virtual void didReceiveResponse(CFURLConnectionRef, CFURLResponseRef) override;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes