| 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/tools/flip_server/spdy_interface.h" | 5 #include "net/tools/flip_server/spdy_interface.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "net/spdy/spdy_framer.h" | 10 #include "net/spdy/spdy_framer.h" |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 if (url == headers.end() || method == headers.end() || | 147 if (url == headers.end() || method == headers.end() || |
| 148 version == headers.end() || scheme == headers.end()) { | 148 version == headers.end() || scheme == headers.end()) { |
| 149 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: A mandatory header is " | 149 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: A mandatory header is " |
| 150 << "missing. Not creating stream"; | 150 << "missing. Not creating stream"; |
| 151 return 0; | 151 return 0; |
| 152 } | 152 } |
| 153 // url->second here only ever seems to contain just the path. When this | 153 // url->second here only ever seems to contain just the path. When this |
| 154 // path contains a query string with a http:// in one of its values, | 154 // path contains a query string with a http:// in one of its values, |
| 155 // UrlUtilities::GetUrlPath will fail and always return a / breaking | 155 // UrlUtilities::GetUrlPath will fail and always return a / breaking |
| 156 // the request. GetUrlPath assumes the absolute URL is being passed in. | 156 // the request. GetUrlPath assumes the absolute URL is being passed in. |
| 157 path_string = UrlUtilities::GetUrlPath(url->second); | 157 path_string = UrlUtilities::GetUrlPath(url->second.as_string()); |
| 158 host_string = UrlUtilities::GetUrlHost(url->second); | 158 host_string = UrlUtilities::GetUrlHost(url->second.as_string()); |
| 159 version_string = version->second; | 159 version_string = version->second.as_string(); |
| 160 } else { | 160 } else { |
| 161 method = headers.find(":method"); | 161 method = headers.find(":method"); |
| 162 host = headers.find(":host"); | 162 host = headers.find(":host"); |
| 163 path = headers.find(":path"); | 163 path = headers.find(":path"); |
| 164 scheme = headers.find(":scheme"); | 164 scheme = headers.find(":scheme"); |
| 165 if (method == headers.end() || host == headers.end() || | 165 if (method == headers.end() || host == headers.end() || |
| 166 path == headers.end() || scheme == headers.end()) { | 166 path == headers.end() || scheme == headers.end()) { |
| 167 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: A mandatory header is " | 167 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: A mandatory header is " |
| 168 << "missing. Not creating stream"; | 168 << "missing. Not creating stream"; |
| 169 return 0; | 169 return 0; |
| 170 } | 170 } |
| 171 host_string = host->second; | 171 host_string = host->second.as_string(); |
| 172 path_string = path->second; | 172 path_string = path->second.as_string(); |
| 173 version_string = "HTTP/1.1"; | 173 version_string = "HTTP/1.1"; |
| 174 } | 174 } |
| 175 | 175 |
| 176 if (scheme->second.compare("https") == 0) { | 176 if (scheme->second.compare("https") == 0) { |
| 177 *is_https_scheme = true; | 177 *is_https_scheme = true; |
| 178 } | 178 } |
| 179 | 179 |
| 180 if (acceptor_->flip_handler_type_ == FLIP_HANDLER_SPDY_SERVER) { | 180 if (acceptor_->flip_handler_type_ == FLIP_HANDLER_SPDY_SERVER) { |
| 181 VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Request: " << method->second | 181 VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Request: " << method->second |
| 182 << " " << path_string; | 182 << " " << path_string; |
| 183 std::string filename = EncodeURL(path_string, | 183 std::string filename = |
| 184 host_string, | 184 EncodeURL(path_string, host_string, method->second.as_string()); |
| 185 method->second); | |
| 186 NewStream(stream_id, priority, filename); | 185 NewStream(stream_id, priority, filename); |
| 187 } else { | 186 } else { |
| 188 http_data += | 187 http_data += method->second.as_string() + " " + path_string + " " + |
| 189 method->second + " " + path_string + " " + version_string + "\r\n"; | 188 version_string + "\r\n"; |
| 190 VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Request: " << method->second << " " | 189 VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Request: " << method->second << " " |
| 191 << path_string << " " << version_string; | 190 << path_string << " " << version_string; |
| 192 http_data += "Host: " + (*is_https_scheme ? | 191 http_data += "Host: " + (*is_https_scheme ? |
| 193 acceptor_->https_server_ip_ : | 192 acceptor_->https_server_ip_ : |
| 194 acceptor_->http_server_ip_) + "\r\n"; | 193 acceptor_->http_server_ip_) + "\r\n"; |
| 195 for (SpdyHeaderBlock::const_iterator i = headers.begin(); | 194 for (SpdyHeaderBlock::const_iterator i = headers.begin(); |
| 196 i != headers.end(); ++i) { | 195 i != headers.end(); ++i) { |
| 197 if ((i->first.size() > 0 && i->first[0] == ':') || | 196 if ((i->first.size() > 0 && i->first[0] == ':') || |
| 198 i->first == "host" || | 197 i->first == "host" || |
| 199 i == method || | 198 i == method || |
| 200 i == host || | 199 i == host || |
| 201 i == path || | 200 i == path || |
| 202 i == scheme || | 201 i == scheme || |
| 203 i == version || | 202 i == version || |
| 204 i == url) { | 203 i == url) { |
| 205 // Ignore the entry. | 204 // Ignore the entry. |
| 206 } else { | 205 } else { |
| 207 http_data += i->first + ": " + i->second + "\r\n"; | 206 http_data += |
| 208 VLOG(2) << ACCEPTOR_CLIENT_IDENT << i->first.c_str() << ":" | 207 i->first.as_string() + ": " + i->second.as_string() + "\r\n"; |
| 209 << i->second.c_str(); | 208 VLOG(2) << ACCEPTOR_CLIENT_IDENT << i->first << ":" << i->second; |
| 210 } | 209 } |
| 211 } | 210 } |
| 212 if (forward_ip_header_.length()) { | 211 if (forward_ip_header_.length()) { |
| 213 // X-Client-Cluster-IP header | 212 // X-Client-Cluster-IP header |
| 214 http_data += forward_ip_header_ + ": " + | 213 http_data += forward_ip_header_ + ": " + |
| 215 connection_->client_ip() + "\r\n"; | 214 connection_->client_ip() + "\r\n"; |
| 216 } | 215 } |
| 217 http_data += "\r\n"; | 216 http_data += "\r\n"; |
| 218 } | 217 } |
| 219 | 218 |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 } | 627 } |
| 629 } | 628 } |
| 630 | 629 |
| 631 void SpdySM::CreateFramer(SpdyMajorVersion spdy_version) { | 630 void SpdySM::CreateFramer(SpdyMajorVersion spdy_version) { |
| 632 DCHECK(!buffered_spdy_framer_); | 631 DCHECK(!buffered_spdy_framer_); |
| 633 buffered_spdy_framer_.reset(new BufferedSpdyFramer(spdy_version, true)); | 632 buffered_spdy_framer_.reset(new BufferedSpdyFramer(spdy_version, true)); |
| 634 buffered_spdy_framer_->set_visitor(this); | 633 buffered_spdy_framer_->set_visitor(this); |
| 635 } | 634 } |
| 636 | 635 |
| 637 } // namespace net | 636 } // namespace net |
| OLD | NEW |