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