Title: [288754] trunk/Source/WebKit
Revision
288754
Author
[email protected]
Date
2022-01-28 11:52:19 -0800 (Fri, 28 Jan 2022)

Log Message

Ensure session is added in network process when it creates connection to web process
https://bugs.webkit.org/show_bug.cgi?id=235754

Reviewed by Chris Dumez.

In NetworkProcess::CreateNetworkConnectionToWebProcess, if the session that web process is using is not added
yet, WorkQueueMessageReceiver cannot be added to the connection and storage messages will be dropped. Usually
session is added in NetworkProcess::AddWebsiteDataStore, which is sent from UI process before
NetworkProcess::CreateNetworkConnectionToWebProcess; but CreateNetworkConnectionToWebProcess message has
DispatchMessageEvenWhenWaitingForSyncReply flag set, so it might get processed earlier.

To fix the issue, now we send set DispatchMessageEvenWhenWaitingForSyncReply flag on AddWebsiteDataStore message
too, so it's processed before CreateNetworkConnectionToWebProcess.

* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::addSession):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (288753 => 288754)


--- trunk/Source/WebKit/ChangeLog	2022-01-28 19:48:34 UTC (rev 288753)
+++ trunk/Source/WebKit/ChangeLog	2022-01-28 19:52:19 UTC (rev 288754)
@@ -1,3 +1,22 @@
+2022-01-28  Sihui Liu  <[email protected]>
+
+        Ensure session is added in network process when it creates connection to web process
+        https://bugs.webkit.org/show_bug.cgi?id=235754
+
+        Reviewed by Chris Dumez.
+
+        In NetworkProcess::CreateNetworkConnectionToWebProcess, if the session that web process is using is not added 
+        yet, WorkQueueMessageReceiver cannot be added to the connection and storage messages will be dropped. Usually 
+        session is added in NetworkProcess::AddWebsiteDataStore, which is sent from UI process before
+        NetworkProcess::CreateNetworkConnectionToWebProcess; but CreateNetworkConnectionToWebProcess message has
+        DispatchMessageEvenWhenWaitingForSyncReply flag set, so it might get processed earlier.
+
+        To fix the issue, now we send set DispatchMessageEvenWhenWaitingForSyncReply flag on AddWebsiteDataStore message
+        too, so it's processed before CreateNetworkConnectionToWebProcess.
+
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::addSession):
+
 2022-01-28  Per Arne Vollan  <[email protected]>
 
         [macOS][WP] Add required syscall

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (288753 => 288754)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2022-01-28 19:48:34 UTC (rev 288753)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2022-01-28 19:52:19 UTC (rev 288754)
@@ -1347,8 +1347,11 @@
     if (!addResult.isNewEntry)
         return;
 
+    // DispatchMessageEvenWhenWaitingForSyncReply is needed because session needs to be
+    // added in network process before CreateNetworkConnectionToWebProcess, which has
+    // DispatchMessageEvenWhenWaitingForSyncReply flag.
     if (canSendMessage() && sendParametersToNetworkProcess == SendParametersToNetworkProcess::Yes)
-        send(Messages::NetworkProcess::AddWebsiteDataStore { store.parameters() }, 0);
+        send(Messages::NetworkProcess::AddWebsiteDataStore { store.parameters() }, 0, IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
     auto sessionID = store.sessionID();
     if (!sessionID.isEphemeral())
         createSymLinkForFileUpgrade(store.resolvedIndexedDatabaseDirectory());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to