From 64d25271901afe957872ec3f16f10963e9db139e Mon Sep 17 00:00:00 2001 From: Erasov Ivan Date: Wed, 18 Jul 2018 15:23:10 +0300 Subject: [PATCH] Added passing cookies from long polling session to web scoket --- Source/SocketIO/Engine/SocketEngine.swift | 2 +- Source/SocketIO/Engine/SocketEngineSpec.swift | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index 4904ee5..c3db64f 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -281,7 +281,7 @@ open class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePollable, So private func createWebSocketAndConnect() { var req = URLRequest(url: urlWebSocketWithSid) - addHeaders(to: &req) + addHeaders(to: &req, includingCookies: session?.configuration.httpCookieStorage?.cookies) ws = WebSocket(request: req) ws?.callbackQueue = engineQueue diff --git a/Source/SocketIO/Engine/SocketEngineSpec.swift b/Source/SocketIO/Engine/SocketEngineSpec.swift index fa08519..3034a0d 100644 --- a/Source/SocketIO/Engine/SocketEngineSpec.swift +++ b/Source/SocketIO/Engine/SocketEngineSpec.swift @@ -155,11 +155,16 @@ extension SocketEngineSpec { return com.url! } - func addHeaders(to req: inout URLRequest) { - if let cookies = cookies { - req.allHTTPHeaderFields = HTTPCookie.requestHeaderFields(with: cookies) + func addHeaders(to req: inout URLRequest, includingCookies additionalCookies: [HTTPCookie]? = nil) { + + var cookiesToAdd = [HTTPCookie]() + cookiesToAdd += cookies ?? [] + cookiesToAdd += additionalCookies ?? [] + + if !cookiesToAdd.isEmpty { + req.allHTTPHeaderFields = HTTPCookie.requestHeaderFields(with: cookiesToAdd) } - + if let extraHeaders = extraHeaders { for (headerName, value) in extraHeaders { req.setValue(value, forHTTPHeaderField: headerName)