Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Side by Side Diff: net/tools/flip_server/spdy_interface.cc

Issue 1561203003: Remove SPDY/2 code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re: #3. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/tools/flip_server/sm_connection.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 132
133 SpdyHeaderBlock::const_iterator method = headers.end(); 133 SpdyHeaderBlock::const_iterator method = headers.end();
134 SpdyHeaderBlock::const_iterator host = headers.end(); 134 SpdyHeaderBlock::const_iterator host = headers.end();
135 SpdyHeaderBlock::const_iterator path = headers.end(); 135 SpdyHeaderBlock::const_iterator path = headers.end();
136 SpdyHeaderBlock::const_iterator scheme = headers.end(); 136 SpdyHeaderBlock::const_iterator scheme = headers.end();
137 SpdyHeaderBlock::const_iterator version = headers.end(); 137 SpdyHeaderBlock::const_iterator version = headers.end();
138 SpdyHeaderBlock::const_iterator url = headers.end(); 138 SpdyHeaderBlock::const_iterator url = headers.end();
139 139
140 std::string path_string, host_string, version_string; 140 std::string path_string, host_string, version_string;
141 141
142 if (spdy_version() == SPDY2) { 142 method = headers.find(":method");
143 url = headers.find("url"); 143 host = headers.find(":host");
144 method = headers.find("method"); 144 path = headers.find(":path");
145 version = headers.find("version"); 145 scheme = headers.find(":scheme");
146 scheme = headers.find("scheme"); 146 if (method == headers.end() || host == headers.end() ||
147 if (url == headers.end() || method == headers.end() || 147 path == headers.end() || scheme == headers.end()) {
148 version == headers.end() || scheme == headers.end()) { 148 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: A mandatory header is "
149 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: A mandatory header is " 149 << "missing. Not creating stream";
150 << "missing. Not creating stream"; 150 return 0;
151 return 0;
152 }
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,
155 // UrlUtilities::GetUrlPath will fail and always return a / breaking
156 // the request. GetUrlPath assumes the absolute URL is being passed in.
157 path_string = UrlUtilities::GetUrlPath(url->second.as_string());
158 host_string = UrlUtilities::GetUrlHost(url->second.as_string());
159 version_string = version->second.as_string();
160 } else {
161 method = headers.find(":method");
162 host = headers.find(":host");
163 path = headers.find(":path");
164 scheme = headers.find(":scheme");
165 if (method == headers.end() || host == headers.end() ||
166 path == headers.end() || scheme == headers.end()) {
167 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: A mandatory header is "
168 << "missing. Not creating stream";
169 return 0;
170 }
171 host_string = host->second.as_string();
172 path_string = path->second.as_string();
173 version_string = "HTTP/1.1";
174 } 151 }
152 host_string = host->second.as_string();
153 path_string = path->second.as_string();
154 version_string = "HTTP/1.1";
175 155
176 if (scheme->second.compare("https") == 0) { 156 if (scheme->second.compare("https") == 0) {
177 *is_https_scheme = true; 157 *is_https_scheme = true;
178 } 158 }
179 159
180 if (acceptor_->flip_handler_type_ == FLIP_HANDLER_SPDY_SERVER) { 160 if (acceptor_->flip_handler_type_ == FLIP_HANDLER_SPDY_SERVER) {
181 VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Request: " << method->second 161 VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Request: " << method->second
182 << " " << path_string; 162 << " " << path_string;
183 std::string filename = 163 std::string filename =
184 EncodeURL(path_string, host_string, method->second.as_string()); 164 EncodeURL(path_string, host_string, method->second.as_string());
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 445
466 // These headers have no value 446 // These headers have no value
467 dest.erase("X-Associated-Content"); // TODO(mbelshe): case-sensitive 447 dest.erase("X-Associated-Content"); // TODO(mbelshe): case-sensitive
468 dest.erase("X-Original-Url"); // TODO(mbelshe): case-sensitive 448 dest.erase("X-Original-Url"); // TODO(mbelshe): case-sensitive
469 } 449 }
470 450
471 size_t SpdySM::SendSynStreamImpl(uint32_t stream_id, 451 size_t SpdySM::SendSynStreamImpl(uint32_t stream_id,
472 const BalsaHeaders& headers) { 452 const BalsaHeaders& headers) {
473 SpdyHeaderBlock block; 453 SpdyHeaderBlock block;
474 CopyHeaders(block, headers); 454 CopyHeaders(block, headers);
475 if (spdy_version() == SPDY2) { 455 block[":method"] = headers.request_method().as_string();
476 block["method"] = headers.request_method().as_string(); 456 block[":version"] = headers.request_version().as_string();
477 if (!headers.HasHeader("version")) 457 if (headers.HasHeader("X-Original-Url")) {
478 block["version"] = headers.request_version().as_string(); 458 std::string original_url = headers.GetHeader("X-Original-Url").as_string();
479 if (headers.HasHeader("X-Original-Url")) { 459 block[":path"] = UrlUtilities::GetUrlPath(original_url);
480 std::string original_url = 460 block[":host"] = UrlUtilities::GetUrlPath(original_url);
481 headers.GetHeader("X-Original-Url").as_string();
482 block["url"] = UrlUtilities::GetUrlPath(original_url);
483 } else {
484 block["url"] = headers.request_uri().as_string();
485 }
486 } else { 461 } else {
487 block[":method"] = headers.request_method().as_string(); 462 block[":path"] = headers.request_uri().as_string();
488 block[":version"] = headers.request_version().as_string(); 463 if (block.find("host") != block.end()) {
489 if (headers.HasHeader("X-Original-Url")) { 464 block[":host"] = headers.GetHeader("Host").as_string();
490 std::string original_url = 465 block.erase("host");
491 headers.GetHeader("X-Original-Url").as_string();
492 block[":path"] = UrlUtilities::GetUrlPath(original_url);
493 block[":host"] = UrlUtilities::GetUrlPath(original_url);
494 } else {
495 block[":path"] = headers.request_uri().as_string();
496 if (block.find("host") != block.end()) {
497 block[":host"] = headers.GetHeader("Host").as_string();
498 block.erase("host");
499 }
500 } 466 }
501 } 467 }
502 468
503 DCHECK(buffered_spdy_framer_); 469 DCHECK(buffered_spdy_framer_);
504 SpdyFrame* fsrcf = buffered_spdy_framer_->CreateSynStream( 470 SpdyFrame* fsrcf = buffered_spdy_framer_->CreateSynStream(
505 stream_id, 0, 0, CONTROL_FLAG_NONE, &block); 471 stream_id, 0, 0, CONTROL_FLAG_NONE, &block);
506 size_t df_size = fsrcf->size(); 472 size_t df_size = fsrcf->size();
507 EnqueueDataFrame(new SpdyFrameDataFrame(fsrcf)); 473 EnqueueDataFrame(new SpdyFrameDataFrame(fsrcf));
508 474
509 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: Sending SynStreamheader " 475 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: Sending SynStreamheader "
510 << stream_id; 476 << stream_id;
511 return df_size; 477 return df_size;
512 } 478 }
513 479
514 size_t SpdySM::SendSynReplyImpl(uint32_t stream_id, 480 size_t SpdySM::SendSynReplyImpl(uint32_t stream_id,
515 const BalsaHeaders& headers) { 481 const BalsaHeaders& headers) {
516 SpdyHeaderBlock block; 482 SpdyHeaderBlock block;
517 CopyHeaders(block, headers); 483 CopyHeaders(block, headers);
518 if (spdy_version() == SPDY2) { 484 block[":status"] = headers.response_code().as_string() + " " +
519 block["status"] = headers.response_code().as_string() + " " + 485 headers.response_reason_phrase().as_string();
520 headers.response_reason_phrase().as_string(); 486 block[":version"] = headers.response_version().as_string();
521 block["version"] = headers.response_version().as_string();
522 } else {
523 block[":status"] = headers.response_code().as_string() + " " +
524 headers.response_reason_phrase().as_string();
525 block[":version"] = headers.response_version().as_string();
526 }
527 487
528 DCHECK(buffered_spdy_framer_); 488 DCHECK(buffered_spdy_framer_);
529 SpdyFrame* fsrcf = buffered_spdy_framer_->CreateSynReply( 489 SpdyFrame* fsrcf = buffered_spdy_framer_->CreateSynReply(
530 stream_id, CONTROL_FLAG_NONE, &block); 490 stream_id, CONTROL_FLAG_NONE, &block);
531 size_t df_size = fsrcf->size(); 491 size_t df_size = fsrcf->size();
532 EnqueueDataFrame(new SpdyFrameDataFrame(fsrcf)); 492 EnqueueDataFrame(new SpdyFrameDataFrame(fsrcf));
533 493
534 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: Sending SynReplyheader " 494 VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: Sending SynReplyheader "
535 << stream_id; 495 << stream_id;
536 return df_size; 496 return df_size;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 } 602 }
643 } 603 }
644 604
645 void SpdySM::CreateFramer(SpdyMajorVersion spdy_version) { 605 void SpdySM::CreateFramer(SpdyMajorVersion spdy_version) {
646 DCHECK(!buffered_spdy_framer_); 606 DCHECK(!buffered_spdy_framer_);
647 buffered_spdy_framer_.reset(new BufferedSpdyFramer(spdy_version, true)); 607 buffered_spdy_framer_.reset(new BufferedSpdyFramer(spdy_version, true));
648 buffered_spdy_framer_->set_visitor(this); 608 buffered_spdy_framer_->set_visitor(this);
649 } 609 }
650 610
651 } // namespace net 611 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/flip_server/sm_connection.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698