OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_handshake_handler.h" | 5 #include "net/websockets/websocket_handshake_handler.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/md5.h" | 8 #include "base/md5.h" |
9 #include "base/sha1.h" | 9 #include "base/sha1.h" |
10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
11 #include "base/string_piece.h" | 11 #include "base/string_piece.h" |
12 #include "base/string_util.h" | 12 #include "base/string_util.h" |
13 #include "base/stringprintf.h" | 13 #include "base/stringprintf.h" |
| 14 #include "base/strings/string_tokenizer.h" |
14 #include "googleurl/src/gurl.h" | 15 #include "googleurl/src/gurl.h" |
15 #include "net/http/http_response_headers.h" | 16 #include "net/http/http_response_headers.h" |
16 #include "net/http/http_util.h" | 17 #include "net/http/http_util.h" |
17 | 18 |
18 namespace { | 19 namespace { |
19 | 20 |
20 const size_t kRequestKey3Size = 8U; | 21 const size_t kRequestKey3Size = 8U; |
21 const size_t kResponseKeySize = 16U; | 22 const size_t kResponseKeySize = 16U; |
22 | 23 |
23 // First version that introduced new WebSocket handshake which does not | 24 // First version that introduced new WebSocket handshake which does not |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 } | 83 } |
83 | 84 |
84 // Similar to HttpUtil::StripHeaders, but it preserves malformed headers, that | 85 // Similar to HttpUtil::StripHeaders, but it preserves malformed headers, that |
85 // is, lines that are not formatted as "<name>: <value>\r\n". | 86 // is, lines that are not formatted as "<name>: <value>\r\n". |
86 std::string FilterHeaders( | 87 std::string FilterHeaders( |
87 const std::string& headers, | 88 const std::string& headers, |
88 const char* const headers_to_remove[], | 89 const char* const headers_to_remove[], |
89 size_t headers_to_remove_len) { | 90 size_t headers_to_remove_len) { |
90 std::string filtered_headers; | 91 std::string filtered_headers; |
91 | 92 |
92 StringTokenizer lines(headers.begin(), headers.end(), "\r\n"); | 93 base::StringTokenizer lines(headers.begin(), headers.end(), "\r\n"); |
93 while (lines.GetNext()) { | 94 while (lines.GetNext()) { |
94 std::string::const_iterator line_begin = lines.token_begin(); | 95 std::string::const_iterator line_begin = lines.token_begin(); |
95 std::string::const_iterator line_end = lines.token_end(); | 96 std::string::const_iterator line_end = lines.token_end(); |
96 std::string::const_iterator name_begin; | 97 std::string::const_iterator name_begin; |
97 std::string::const_iterator name_end; | 98 std::string::const_iterator name_end; |
98 bool should_remove = false; | 99 bool should_remove = false; |
99 if (GetHeaderName(line_begin, line_end, &name_begin, &name_end)) { | 100 if (GetHeaderName(line_begin, line_end, &name_begin, &name_end)) { |
100 for (size_t i = 0; i < headers_to_remove_len; ++i) { | 101 for (size_t i = 0; i < headers_to_remove_len; ++i) { |
101 if (LowerCaseEqualsASCII(name_begin, name_end, headers_to_remove[i])) { | 102 if (LowerCaseEqualsASCII(name_begin, name_end, headers_to_remove[i])) { |
102 should_remove = true; | 103 should_remove = true; |
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 return status_line_ + headers_ + header_separator_ + key_; | 557 return status_line_ + headers_ + header_separator_ + key_; |
557 } | 558 } |
558 | 559 |
559 size_t WebSocketHandshakeResponseHandler::GetResponseKeySize() const { | 560 size_t WebSocketHandshakeResponseHandler::GetResponseKeySize() const { |
560 if (protocol_version_ >= kMinVersionOfHybiNewHandshake) | 561 if (protocol_version_ >= kMinVersionOfHybiNewHandshake) |
561 return 0; | 562 return 0; |
562 return kResponseKeySize; | 563 return kResponseKeySize; |
563 } | 564 } |
564 | 565 |
565 } // namespace net | 566 } // namespace net |
OLD | NEW |