Title: [265752] trunk/Source/WebKit
Revision
265752
Author
[email protected]
Date
2020-08-17 05:21:15 -0700 (Mon, 17 Aug 2020)

Log Message

Set Sec-WebSocket-Protocol for WebSocket NSURLSession code path
https://bugs.webkit.org/show_bug.cgi?id=215456
<rdar://problem/66996369>

Reviewed by Alex Christensen.

Covered by existing protocol tests with NSURLSession code path enabled.
http/tests/websocket/tests/hybi/set-protocol.html, http/tests/websocket/tests/hybi/workers/multiple-subprotocols.html
Code change originating from Jiten Mehta.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::createWebSocketTask):
Set Sec-WebSocket-Protocol to support WebSocket protocol negotiation.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (265751 => 265752)


--- trunk/Source/WebKit/ChangeLog	2020-08-17 11:04:35 UTC (rev 265751)
+++ trunk/Source/WebKit/ChangeLog	2020-08-17 12:21:15 UTC (rev 265752)
@@ -1,3 +1,19 @@
+2020-08-17  Youenn Fablet  <[email protected]>
+
+        Set Sec-WebSocket-Protocol for WebSocket NSURLSession code path
+        https://bugs.webkit.org/show_bug.cgi?id=215456
+        <rdar://problem/66996369>
+
+        Reviewed by Alex Christensen.
+
+        Covered by existing protocol tests with NSURLSession code path enabled.
+        http/tests/websocket/tests/hybi/set-protocol.html, http/tests/websocket/tests/hybi/workers/multiple-subprotocols.html
+        Code change originating from Jiten Mehta.
+
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (WebKit::NetworkSessionCocoa::createWebSocketTask):
+        Set Sec-WebSocket-Protocol to support WebSocket protocol negotiation.
+
 2020-08-17  Carlos Garcia Campos  <[email protected]>
 
         REGRESSION(r265725) [GTK][WPE] Several http/tests timeout/failures

Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (265751 => 265752)


--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2020-08-17 11:04:35 UTC (rev 265751)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2020-08-17 12:21:15 UTC (rev 265752)
@@ -1565,8 +1565,14 @@
 #if HAVE(NSURLSESSION_WEBSOCKET)
 std::unique_ptr<WebSocketTask> NetworkSessionCocoa::createWebSocketTask(NetworkSocketChannel& channel, const WebCore::ResourceRequest& request, const String& protocol)
 {
-    // FIXME: Use protocol.
-    RetainPtr<NSURLSessionWebSocketTask> task = [m_sessionWithCredentialStorage.session webSocketTaskWithRequest:request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody)];
+    ASSERT(!request.hasHTTPHeaderField(WebCore::HTTPHeaderName::SecWebSocketProtocol));
+    auto *nsRequest = request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody);
+    if (!protocol.isNull()) {
+        NSMutableURLRequest *requestWithProtocols = [[nsRequest mutableCopy] autorelease];
+        [requestWithProtocols addValue: StringView(protocol).createNSString().get() forHTTPHeaderField:@"Sec-WebSocket-Protocol"];
+        nsRequest = requestWithProtocols;
+    }
+    RetainPtr<NSURLSessionWebSocketTask> task = [m_sessionWithCredentialStorage.session webSocketTaskWithRequest:nsRequest];
     return makeUnique<WebSocketTask>(channel, WTFMove(task));
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to