OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 3 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 builder.append(" HTTP/1.1\r\n"); | 202 builder.append(" HTTP/1.1\r\n"); |
203 | 203 |
204 Vector<String> fields; | 204 Vector<String> fields; |
205 fields.append("Upgrade: websocket"); | 205 fields.append("Upgrade: websocket"); |
206 fields.append("Connection: Upgrade"); | 206 fields.append("Connection: Upgrade"); |
207 fields.append("Host: " + hostName(m_url, m_secure)); | 207 fields.append("Host: " + hostName(m_url, m_secure)); |
208 fields.append("Origin: " + clientOrigin()); | 208 fields.append("Origin: " + clientOrigin()); |
209 if (!m_clientProtocol.isEmpty()) | 209 if (!m_clientProtocol.isEmpty()) |
210 fields.append("Sec-WebSocket-Protocol: " + m_clientProtocol); | 210 fields.append("Sec-WebSocket-Protocol: " + m_clientProtocol); |
211 | 211 |
212 KURL url = httpURLForAuthenticationAndCookies(); | |
213 | |
214 String cookie = cookieRequestHeaderFieldValue(m_document, url); | |
215 if (!cookie.isEmpty()) | |
216 fields.append("Cookie: " + cookie); | |
217 // Set "Cookie2: <cookie>" if cookies 2 exists for url? | |
218 | |
219 // Add no-cache headers to avoid compatibility issue. | 212 // Add no-cache headers to avoid compatibility issue. |
220 // There are some proxies that rewrite "Connection: upgrade" | 213 // There are some proxies that rewrite "Connection: upgrade" |
221 // to "Connection: close" in the response if a request doesn't contain | 214 // to "Connection: close" in the response if a request doesn't contain |
222 // these headers. | 215 // these headers. |
223 fields.append("Pragma: no-cache"); | 216 fields.append("Pragma: no-cache"); |
224 fields.append("Cache-Control: no-cache"); | 217 fields.append("Cache-Control: no-cache"); |
225 | 218 |
226 fields.append("Sec-WebSocket-Key: " + m_secWebSocketKey); | 219 fields.append("Sec-WebSocket-Key: " + m_secWebSocketKey); |
227 fields.append("Sec-WebSocket-Version: 13"); | 220 fields.append("Sec-WebSocket-Version: 13"); |
228 const String extensionValue = m_extensionDispatcher.createHeaderValue(); | 221 const String extensionValue = m_extensionDispatcher.createHeaderValue(); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 String WebSocketHandshake::failureReason() const | 335 String WebSocketHandshake::failureReason() const |
343 { | 336 { |
344 return m_failureReason; | 337 return m_failureReason; |
345 } | 338 } |
346 | 339 |
347 const AtomicString& WebSocketHandshake::serverWebSocketProtocol() const | 340 const AtomicString& WebSocketHandshake::serverWebSocketProtocol() const |
348 { | 341 { |
349 return m_response.headerFields().get("sec-websocket-protocol"); | 342 return m_response.headerFields().get("sec-websocket-protocol"); |
350 } | 343 } |
351 | 344 |
352 const AtomicString& WebSocketHandshake::serverSetCookie() const | |
353 { | |
354 return m_response.headerFields().get("set-cookie"); | |
355 } | |
356 | |
357 const AtomicString& WebSocketHandshake::serverSetCookie2() const | |
358 { | |
359 return m_response.headerFields().get("set-cookie2"); | |
360 } | |
361 | |
362 const AtomicString& WebSocketHandshake::serverUpgrade() const | 345 const AtomicString& WebSocketHandshake::serverUpgrade() const |
363 { | 346 { |
364 return m_response.headerFields().get("upgrade"); | 347 return m_response.headerFields().get("upgrade"); |
365 } | 348 } |
366 | 349 |
367 const AtomicString& WebSocketHandshake::serverConnection() const | 350 const AtomicString& WebSocketHandshake::serverConnection() const |
368 { | 351 { |
369 return m_response.headerFields().get("connection"); | 352 return m_response.headerFields().get("connection"); |
370 } | 353 } |
371 | 354 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 } | 560 } |
578 if (!match) { | 561 if (!match) { |
579 m_failureReason = formatHandshakeFailureReason("Sent non-empty 'Sec-
WebSocket-Protocol' header but no response was received"); | 562 m_failureReason = formatHandshakeFailureReason("Sent non-empty 'Sec-
WebSocket-Protocol' header but no response was received"); |
580 return false; | 563 return false; |
581 } | 564 } |
582 } | 565 } |
583 return true; | 566 return true; |
584 } | 567 } |
585 | 568 |
586 } // namespace WebCore | 569 } // namespace WebCore |
OLD | NEW |