OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/spdy/spdy_framer.h" | 5 #include "net/spdy/spdy_framer.h" |
6 | 6 |
7 #include "base/scoped_ptr.h" | 7 #include "base/scoped_ptr.h" |
8 #include "base/stats_counters.h" | 8 #include "base/stats_counters.h" |
9 | 9 |
10 #include "net/spdy/spdy_frame_builder.h" | 10 #include "net/spdy/spdy_frame_builder.h" |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 header_data = syn_frame.header_block(); | 463 header_data = syn_frame.header_block(); |
464 header_length = syn_frame.header_block_len(); | 464 header_length = syn_frame.header_block_len(); |
465 } | 465 } |
466 break; | 466 break; |
467 } | 467 } |
468 | 468 |
469 SpdyFrameBuilder builder(header_data, header_length); | 469 SpdyFrameBuilder builder(header_data, header_length); |
470 void* iter = NULL; | 470 void* iter = NULL; |
471 uint16 num_headers; | 471 uint16 num_headers; |
472 if (builder.ReadUInt16(&iter, &num_headers)) { | 472 if (builder.ReadUInt16(&iter, &num_headers)) { |
473 for (int index = 0; index < num_headers; ++index) { | 473 int index = 0; |
| 474 for ( ; index < num_headers; ++index) { |
474 std::string name; | 475 std::string name; |
475 std::string value; | 476 std::string value; |
476 if (!builder.ReadString(&iter, &name)) | 477 if (!builder.ReadString(&iter, &name)) |
477 break; | 478 break; |
478 if (!builder.ReadString(&iter, &value)) | 479 if (!builder.ReadString(&iter, &value)) |
479 break; | 480 break; |
480 if (!name.size() || !value.size()) | 481 if (!name.size() || !value.size()) |
481 return false; | 482 return false; |
482 if (block->find(name) == block->end()) { | 483 if (block->find(name) == block->end()) { |
483 (*block)[name] = value; | 484 (*block)[name] = value; |
484 } else { | 485 } else { |
485 return false; | 486 return false; |
486 } | 487 } |
487 } | 488 } |
488 return true; | 489 return index == num_headers && |
| 490 iter == header_data + header_length; |
489 } | 491 } |
490 return false; | 492 return false; |
491 } | 493 } |
492 | 494 |
493 /* static */ | 495 /* static */ |
494 bool SpdyFramer::ParseSettings(const SpdySettingsControlFrame* frame, | 496 bool SpdyFramer::ParseSettings(const SpdySettingsControlFrame* frame, |
495 SpdySettings* settings) { | 497 SpdySettings* settings) { |
496 DCHECK_EQ(frame->type(), SETTINGS); | 498 DCHECK_EQ(frame->type(), SETTINGS); |
497 DCHECK(settings); | 499 DCHECK(settings); |
498 | 500 |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1077 void SpdyFramer::set_enable_compression(bool value) { | 1079 void SpdyFramer::set_enable_compression(bool value) { |
1078 enable_compression_ = value; | 1080 enable_compression_ = value; |
1079 } | 1081 } |
1080 | 1082 |
1081 void SpdyFramer::set_enable_compression_default(bool value) { | 1083 void SpdyFramer::set_enable_compression_default(bool value) { |
1082 compression_default_ = value; | 1084 compression_default_ = value; |
1083 } | 1085 } |
1084 | 1086 |
1085 } // namespace spdy | 1087 } // namespace spdy |
1086 | 1088 |
OLD | NEW |