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

Side by Side Diff: net/quic/core/quic_spdy_stream.cc

Issue 2740453006: Add QuicStringPiece which is actually StringPiece. (Closed)
Patch Set: fix compile error and rebase Created 3 years, 9 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/quic/core/quic_spdy_stream.h ('k') | net/quic/core/quic_spdy_stream_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/quic/core/quic_spdy_stream.h" 5 #include "net/quic/core/quic_spdy_stream.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "net/quic/core/quic_spdy_session.h" 9 #include "net/quic/core/quic_spdy_session.h"
10 #include "net/quic/core/quic_utils.h" 10 #include "net/quic/core/quic_utils.h"
11 #include "net/quic/core/quic_write_blocked_list.h" 11 #include "net/quic/core/quic_write_blocked_list.h"
12 #include "net/quic/core/spdy_utils.h" 12 #include "net/quic/core/spdy_utils.h"
13 #include "net/quic/platform/api/quic_bug_tracker.h" 13 #include "net/quic/platform/api/quic_bug_tracker.h"
14 #include "net/quic/platform/api/quic_logging.h" 14 #include "net/quic/platform/api/quic_logging.h"
15 #include "net/quic/platform/api/quic_string_piece.h"
15 #include "net/quic/platform/api/quic_text_utils.h" 16 #include "net/quic/platform/api/quic_text_utils.h"
16 17
17 using base::IntToString; 18 using base::IntToString;
18 using base::StringPiece;
19 using std::string; 19 using std::string;
20 20
21 namespace net { 21 namespace net {
22 #define ENDPOINT \ 22 #define ENDPOINT \
23 (session()->perspective() == Perspective::IS_SERVER ? "Server: " : "Client:" \ 23 (session()->perspective() == Perspective::IS_SERVER ? "Server: " : "Client:" \
24 " ") 24 " ")
25 25
26 QuicSpdyStream::QuicSpdyStream(QuicStreamId id, QuicSpdySession* spdy_session) 26 QuicSpdyStream::QuicSpdyStream(QuicStreamId id, QuicSpdySession* spdy_session)
27 : QuicStream(id, spdy_session), 27 : QuicStream(id, spdy_session),
28 spdy_session_(spdy_session), 28 spdy_session_(spdy_session),
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 Reset(QUIC_HEADERS_TOO_LARGE); 184 Reset(QUIC_HEADERS_TOO_LARGE);
185 } 185 }
186 186
187 void QuicSpdyStream::OnInitialHeadersComplete( 187 void QuicSpdyStream::OnInitialHeadersComplete(
188 bool fin, 188 bool fin,
189 size_t /*frame_len*/, 189 size_t /*frame_len*/,
190 const QuicHeaderList& header_list) { 190 const QuicHeaderList& header_list) {
191 headers_decompressed_ = true; 191 headers_decompressed_ = true;
192 header_list_ = header_list; 192 header_list_ = header_list;
193 if (fin) { 193 if (fin) {
194 OnStreamFrame(QuicStreamFrame(id(), fin, 0, StringPiece())); 194 OnStreamFrame(QuicStreamFrame(id(), fin, 0, QuicStringPiece()));
195 } 195 }
196 if (FinishedReadingHeaders()) { 196 if (FinishedReadingHeaders()) {
197 sequencer()->SetUnblocked(); 197 sequencer()->SetUnblocked();
198 } 198 }
199 } 199 }
200 200
201 void QuicSpdyStream::OnPromiseHeaderList( 201 void QuicSpdyStream::OnPromiseHeaderList(
202 QuicStreamId /* promised_id */, 202 QuicStreamId /* promised_id */,
203 size_t /* frame_len */, 203 size_t /* frame_len */,
204 const QuicHeaderList& /*header_list */) { 204 const QuicHeaderList& /*header_list */) {
(...skipping 28 matching lines...) Expand all
233 size_t final_byte_offset = 0; 233 size_t final_byte_offset = 0;
234 if (!SpdyUtils::CopyAndValidateTrailers(header_list, &final_byte_offset, 234 if (!SpdyUtils::CopyAndValidateTrailers(header_list, &final_byte_offset,
235 &received_trailers_)) { 235 &received_trailers_)) {
236 QUIC_DLOG(ERROR) << "Trailers are malformed: " << id(); 236 QUIC_DLOG(ERROR) << "Trailers are malformed: " << id();
237 session()->connection()->CloseConnection( 237 session()->connection()->CloseConnection(
238 QUIC_INVALID_HEADERS_STREAM_DATA, "Trailers are malformed", 238 QUIC_INVALID_HEADERS_STREAM_DATA, "Trailers are malformed",
239 ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); 239 ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
240 return; 240 return;
241 } 241 }
242 trailers_decompressed_ = true; 242 trailers_decompressed_ = true;
243 OnStreamFrame(QuicStreamFrame(id(), fin, final_byte_offset, StringPiece())); 243 OnStreamFrame(
244 QuicStreamFrame(id(), fin, final_byte_offset, QuicStringPiece()));
244 } 245 }
245 246
246 void QuicSpdyStream::OnStreamReset(const QuicRstStreamFrame& frame) { 247 void QuicSpdyStream::OnStreamReset(const QuicRstStreamFrame& frame) {
247 if (frame.error_code != QUIC_STREAM_NO_ERROR) { 248 if (frame.error_code != QUIC_STREAM_NO_ERROR) {
248 QuicStream::OnStreamReset(frame); 249 QuicStream::OnStreamReset(frame);
249 return; 250 return;
250 } 251 }
251 QUIC_DVLOG(1) << "Received QUIC_STREAM_NO_ERROR, not discarding response"; 252 QUIC_DVLOG(1) << "Received QUIC_STREAM_NO_ERROR, not discarding response";
252 set_rst_received(true); 253 set_rst_received(true);
253 MaybeIncreaseHighestReceivedOffset(frame.byte_offset); 254 MaybeIncreaseHighestReceivedOffset(frame.byte_offset);
(...skipping 25 matching lines...) Expand all
279 bool QuicSpdyStream::FinishedReadingHeaders() const { 280 bool QuicSpdyStream::FinishedReadingHeaders() const {
280 return headers_decompressed_ && header_list_.empty(); 281 return headers_decompressed_ && header_list_.empty();
281 } 282 }
282 283
283 bool QuicSpdyStream::ParseHeaderStatusCode(const SpdyHeaderBlock& header, 284 bool QuicSpdyStream::ParseHeaderStatusCode(const SpdyHeaderBlock& header,
284 int* status_code) const { 285 int* status_code) const {
285 SpdyHeaderBlock::const_iterator it = header.find(":status"); 286 SpdyHeaderBlock::const_iterator it = header.find(":status");
286 if (it == header.end()) { 287 if (it == header.end()) {
287 return false; 288 return false;
288 } 289 }
289 const StringPiece status(it->second); 290 const QuicStringPiece status(it->second);
290 if (status.size() != 3) { 291 if (status.size() != 3) {
291 return false; 292 return false;
292 } 293 }
293 // First character must be an integer in range [1,5]. 294 // First character must be an integer in range [1,5].
294 if (status[0] < '1' || status[0] > '5') { 295 if (status[0] < '1' || status[0] > '5') {
295 return false; 296 return false;
296 } 297 }
297 // The remaining two characters must be integers. 298 // The remaining two characters must be integers.
298 if (!isdigit(status[1]) || !isdigit(status[2])) { 299 if (!isdigit(status[1]) || !isdigit(status[2])) {
299 return false; 300 return false;
(...skipping 28 matching lines...) Expand all
328 QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) { 329 QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) {
329 if (spdy_session_->headers_stream() != nullptr && 330 if (spdy_session_->headers_stream() != nullptr &&
330 spdy_session_->force_hol_blocking()) { 331 spdy_session_->force_hol_blocking()) {
331 return spdy_session_->WritevStreamData(id(), iov, offset, fin, 332 return spdy_session_->WritevStreamData(id(), iov, offset, fin,
332 std::move(ack_listener)); 333 std::move(ack_listener));
333 } 334 }
334 return QuicStream::WritevDataInner(iov, offset, fin, std::move(ack_listener)); 335 return QuicStream::WritevDataInner(iov, offset, fin, std::move(ack_listener));
335 } 336 }
336 337
337 } // namespace net 338 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_spdy_stream.h ('k') | net/quic/core/quic_spdy_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698