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

Side by Side Diff: net/spdy/spdy_framer_test.cc

Issue 246933003: SPDY: Fix flaky padding edge case. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase only. Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_framer.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 <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 1629 matching lines...) Expand 10 before | Expand all | Expand 10 after
1640 if (IsSpdy4()) { 1640 if (IsSpdy4()) {
1641 CompareFrame( 1641 CompareFrame(
1642 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); 1642 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
1643 } else { 1643 } else {
1644 CompareFrame( 1644 CompareFrame(
1645 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 1645 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
1646 } 1646 }
1647 } 1647 }
1648 1648
1649 { 1649 {
1650 const char kDescription[] =
1651 "'hello' data frame with 1 byte padding, no FIN";
1652 const unsigned char kV3FrameData[] = { // Also applies for V2.
1653 0x00, 0x00, 0x00, 0x01,
1654 0x00, 0x00, 0x00, 0x05,
1655 'h', 'e', 'l', 'l',
1656 'o'
1657 };
1658
1659 const unsigned char kV4FrameData[] = {
1660 0x00, 0x06, 0x00, 0x10, // Length = 6. PAD_LOW set.
1661 0x00, 0x00, 0x00, 0x01,
1662 0x00, // Pad Low field.
1663 'h', 'e', 'l', 'l', // Data
1664 'o',
1665 };
1666 const char bytes[] = "hello";
1667
1668 SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes)));
1669 // The pad low field itself is used for the 1-byte padding and no padding
1670 // payload is needed.
1671 data_ir.set_padding_len(1);
1672 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir));
1673 if (IsSpdy4()) {
1674 CompareFrame(
1675 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
1676 } else {
1677 CompareFrame(
1678 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
1679 }
1680
1681 frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField(data_ir));
1682 CompareCharArraysWithHexError(
1683 kDescription,
1684 reinterpret_cast<const unsigned char*>(frame->data()),
1685 framer.GetDataFrameMinimumSize(),
1686 IsSpdy4() ? kV4FrameData : kV3FrameData,
1687 framer.GetDataFrameMinimumSize());
1688 }
1689
1690 {
1650 const char kDescription[] = "Data frame with negative data byte, no FIN"; 1691 const char kDescription[] = "Data frame with negative data byte, no FIN";
1651 const unsigned char kV3FrameData[] = { // Also applies for V2. 1692 const unsigned char kV3FrameData[] = { // Also applies for V2.
1652 0x00, 0x00, 0x00, 0x01, 1693 0x00, 0x00, 0x00, 0x01,
1653 0x00, 0x00, 0x00, 0x01, 1694 0x00, 0x00, 0x00, 0x01,
1654 0xff 1695 0xff
1655 }; 1696 };
1656 const unsigned char kV4FrameData[] = { 1697 const unsigned char kV4FrameData[] = {
1657 0x00, 0x01, 0x00, 0x00, 1698 0x00, 0x01, 0x00, 0x00,
1658 0x00, 0x00, 0x00, 0x01, 1699 0x00, 0x00, 0x00, 0x01,
1659 0xff 1700 0xff
(...skipping 3249 matching lines...) Expand 10 before | Expand all | Expand 10 after
4909 SpdyBlockedIR blocked_ir(0); 4950 SpdyBlockedIR blocked_ir(0);
4910 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(blocked_ir)); 4951 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(blocked_ir));
4911 framer.ProcessInput(frame->data(), framer.GetBlockedSize()); 4952 framer.ProcessInput(frame->data(), framer.GetBlockedSize());
4912 4953
4913 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); 4954 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state());
4914 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) 4955 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
4915 << SpdyFramer::ErrorCodeToString(framer.error_code()); 4956 << SpdyFramer::ErrorCodeToString(framer.error_code());
4916 } 4957 }
4917 4958
4918 } // namespace net 4959 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698