Title: [197865] trunk/Source/WebKit2
- Revision
- 197865
- Author
- [email protected]
- Date
- 2016-03-09 11:04:07 -0800 (Wed, 09 Mar 2016)
Log Message
Always call NSURLSession completion handlers
https://bugs.webkit.org/show_bug.cgi?id=155137
Patch by Alex Christensen <[email protected]> on 2016-03-09
Reviewed by Darin Adler.
There are some edge cases which should not be hit, but if they are they would cause the
network process to hang and network resources to be leaked. This can be avoided.
There are also a few release asserts that do not need to crash release builds.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTask::NetworkDataTask):
(WebKit::NetworkDataTask::didReceiveChallenge):
(WebKit::NetworkDataTask::didCompleteWithError):
(WebKit::NetworkDataTask::didReceiveResponse):
(WebKit::NetworkDataTask::didReceiveData):
(WebKit::NetworkDataTask::willPerformHTTPRedirection):
(WebKit::NetworkDataTask::scheduleFailure):
(WebKit::NetworkDataTask::tryPasswordBasedAuthentication):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (197864 => 197865)
--- trunk/Source/WebKit2/ChangeLog 2016-03-09 18:45:18 UTC (rev 197864)
+++ trunk/Source/WebKit2/ChangeLog 2016-03-09 19:04:07 UTC (rev 197865)
@@ -1,3 +1,28 @@
+2016-03-09 Alex Christensen <[email protected]>
+
+ Always call NSURLSession completion handlers
+ https://bugs.webkit.org/show_bug.cgi?id=155137
+
+ Reviewed by Darin Adler.
+
+ There are some edge cases which should not be hit, but if they are they would cause the
+ network process to hang and network resources to be leaked. This can be avoided.
+ There are also a few release asserts that do not need to crash release builds.
+
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+ (WebKit::NetworkDataTask::NetworkDataTask):
+ (WebKit::NetworkDataTask::didReceiveChallenge):
+ (WebKit::NetworkDataTask::didCompleteWithError):
+ (WebKit::NetworkDataTask::didReceiveResponse):
+ (WebKit::NetworkDataTask::didReceiveData):
+ (WebKit::NetworkDataTask::willPerformHTTPRedirection):
+ (WebKit::NetworkDataTask::scheduleFailure):
+ (WebKit::NetworkDataTask::tryPasswordBasedAuthentication):
+ * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+ (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
+ (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
+ (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
+
2016-03-08 Sam Weinig <[email protected]>
Roll r197632 back in now that the bots have caught up.
Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (197864 => 197865)
--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2016-03-09 18:45:18 UTC (rev 197864)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2016-03-09 19:04:07 UTC (rev 197865)
@@ -85,7 +85,7 @@
else
storageSession->credentialStorage().set(WebCore::Credential(m_user, m_password, WebCore::CredentialPersistenceNone), url);
} else
- RELEASE_ASSERT_NOT_REACHED();
+ ASSERT_NOT_REACHED();
#endif
}
@@ -154,6 +154,10 @@
if (m_client)
m_client->didReceiveChallenge(challenge, completionHandler);
+ else {
+ ASSERT_NOT_REACHED();
+ completionHandler(AuthenticationChallengeDisposition::PerformDefaultHandling, { });
+ }
}
void NetworkDataTask::didCompleteWithError(const WebCore::ResourceError& error)
@@ -166,6 +170,10 @@
{
if (m_client)
m_client->didReceiveResponseNetworkSession(response, completionHandler);
+ else {
+ ASSERT_NOT_REACHED();
+ completionHandler(WebCore::PolicyAction::PolicyIgnore);
+ }
}
void NetworkDataTask::didReceiveData(RefPtr<WebCore::SharedBuffer>&& data)
@@ -222,13 +230,17 @@
applyBasicAuthorizationHeader(request, m_initialCredential);
}
} else
- RELEASE_ASSERT_NOT_REACHED();
+ ASSERT_NOT_REACHED();
}
#endif
}
if (m_client)
m_client->willPerformHTTPRedirection(redirectResponse, request, completionHandler);
+ else {
+ ASSERT_NOT_REACHED();
+ completionHandler({ });
+ }
}
void NetworkDataTask::scheduleFailure(FailureType type)
@@ -307,7 +319,7 @@
}
}
} else
- RELEASE_ASSERT_NOT_REACHED();
+ ASSERT_NOT_REACHED();
}
#endif
Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm (197864 => 197865)
--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2016-03-09 18:45:18 UTC (rev 197864)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2016-03-09 19:04:07 UTC (rev 197865)
@@ -113,6 +113,9 @@
completionHandlerCopy(request.nsURLRequest(WebCore::UpdateHTTPBody));
Block_release(completionHandlerCopy);
});
+ } else {
+ ASSERT_NOT_REACHED();
+ completionHandler(nil);
}
}
@@ -137,6 +140,8 @@
urlToStore = authenticationChallenge.failureResponse().url();
if (auto storageSession = WebKit::SessionTracker::storageSession(sessionID))
storageSession->credentialStorage().set(nonPersistentCredential, authenticationChallenge.protectionSpace(), urlToStore);
+ else
+ ASSERT_NOT_REACHED();
completionHandlerCopy(toNSURLSessionAuthChallengeDisposition(disposition), nonPersistentCredential.nsCredential());
} else
@@ -145,6 +150,9 @@
Block_release(completionHandlerCopy);
};
networkDataTask->didReceiveChallenge(challenge, challengeCompletionHandler);
+ } else {
+ ASSERT_NOT_REACHED();
+ completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
}
}
@@ -180,6 +188,9 @@
completionHandlerCopy(toNSURLSessionResponseDisposition(policyAction));
Block_release(completionHandlerCopy);
});
+ } else {
+ ASSERT_NOT_REACHED();
+ completionHandler(NSURLSessionResponseCancel);
}
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes