Changeset 246878 in webkit
- Timestamp:
- Jun 27, 2019 1:58:52 AM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r246877 r246878 1 2019-06-27 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [SOUP] WebSockets: handle TLS certificate and errors 4 https://bugs.webkit.org/show_bug.cgi?id=199223 5 6 Reviewed by Michael Catanzaro. 7 8 Connect to accept-certificate signal on the WebSocket message connection to decide what to do in case of TLS errors. 9 10 * NetworkProcess/soup/NetworkSessionSoup.cpp: 11 (WebKit::webSocketAcceptCertificateCallback): 12 (WebKit::webSocketMessageNetworkEventCallback): 13 (WebKit::NetworkSessionSoup::createWebSocketTask): 14 1 15 2019-06-27 Carlos Garcia Campos <cgarcia@igalia.com> 2 16 -
trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp
r246877 r246878 31 31 #include "WebCookieManager.h" 32 32 #include "WebSocketTaskSoup.h" 33 #include <WebCore/DeprecatedGlobalSettings.h> 33 34 #include <WebCore/NetworkStorageSession.h> 34 35 #include <WebCore/ResourceRequest.h> … … 68 69 } 69 70 71 static gboolean webSocketAcceptCertificateCallback(GTlsConnection*, GTlsCertificate* certificate, GTlsCertificateFlags errors, SoupMessage* soupMessage) 72 { 73 if (DeprecatedGlobalSettings::allowsAnySSLCertificate()) 74 return TRUE; 75 76 return !SoupNetworkSession::checkTLSErrors(soupURIToURL(soup_message_get_uri(soupMessage)), certificate, errors); 77 } 78 79 static void webSocketMessageNetworkEventCallback(SoupMessage* soupMessage, GSocketClientEvent event, GIOStream* connection) 80 { 81 if (event != G_SOCKET_CLIENT_TLS_HANDSHAKING) 82 return; 83 84 g_signal_connect(connection, "accept-certificate", G_CALLBACK(webSocketAcceptCertificateCallback), soupMessage); 85 } 86 70 87 std::unique_ptr<WebSocketTask> NetworkSessionSoup::createWebSocketTask(NetworkSocketChannel& channel, const ResourceRequest& request, const String& protocol) 71 88 { … … 76 93 GRefPtr<SoupMessage> soupMessage = adoptGRef(soup_message_new_from_uri(SOUP_METHOD_GET, soupURI.get())); 77 94 request.updateSoupMessage(soupMessage.get()); 95 if (request.url().protocolIs("wss")) 96 g_signal_connect(soupMessage.get(), "network-event", G_CALLBACK(webSocketMessageNetworkEventCallback), nullptr); 78 97 return std::make_unique<WebSocketTask>(channel, soupSession(), soupMessage.get(), protocol); 79 98 }
Note: See TracChangeset
for help on using the changeset viewer.