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

Reply via email to