| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/websockets/websocket_basic_handshake_stream.h" | 5 #include "net/websockets/websocket_basic_handshake_stream.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iterator> | 8 #include <iterator> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 WebSocketExtensionParams* params) { | 308 WebSocketExtensionParams* params) { |
| 309 void* state = nullptr; | 309 void* state = nullptr; |
| 310 std::string header_value; | 310 std::string header_value; |
| 311 std::vector<std::string> header_values; | 311 std::vector<std::string> header_values; |
| 312 // TODO(ricea): If adding support for additional extensions, generalise this | 312 // TODO(ricea): If adding support for additional extensions, generalise this |
| 313 // code. | 313 // code. |
| 314 bool seen_permessage_deflate = false; | 314 bool seen_permessage_deflate = false; |
| 315 while (headers->EnumerateHeader(&state, websockets::kSecWebSocketExtensions, | 315 while (headers->EnumerateHeader(&state, websockets::kSecWebSocketExtensions, |
| 316 &header_value)) { | 316 &header_value)) { |
| 317 WebSocketExtensionParser parser; | 317 WebSocketExtensionParser parser; |
| 318 parser.Parse(header_value); | 318 if (!parser.Parse(header_value)) { |
| 319 if (parser.has_error()) { | |
| 320 // TODO(yhirano) Set appropriate failure message. | 319 // TODO(yhirano) Set appropriate failure message. |
| 321 *failure_message = | 320 *failure_message = |
| 322 "'Sec-WebSocket-Extensions' header value is " | 321 "'Sec-WebSocket-Extensions' header value is " |
| 323 "rejected by the parser: " + | 322 "rejected by the parser: " + |
| 324 header_value; | 323 header_value; |
| 325 return false; | 324 return false; |
| 326 } | 325 } |
| 327 | 326 |
| 328 const std::vector<WebSocketExtension>& extensions = parser.extensions(); | 327 const std::vector<WebSocketExtension>& extensions = parser.extensions(); |
| 329 for (const auto& extension : extensions) { | 328 for (const auto& extension : extensions) { |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 648 set_failure_message("Error during WebSocket handshake: " + failure_message); | 647 set_failure_message("Error during WebSocket handshake: " + failure_message); |
| 649 return ERR_INVALID_RESPONSE; | 648 return ERR_INVALID_RESPONSE; |
| 650 } | 649 } |
| 651 | 650 |
| 652 void WebSocketBasicHandshakeStream::set_failure_message( | 651 void WebSocketBasicHandshakeStream::set_failure_message( |
| 653 const std::string& failure_message) { | 652 const std::string& failure_message) { |
| 654 *failure_message_ = failure_message; | 653 *failure_message_ = failure_message; |
| 655 } | 654 } |
| 656 | 655 |
| 657 } // namespace net | 656 } // namespace net |
| OLD | NEW |