| Index: net/spdy/spdy_protocol.cc
|
| diff --git a/net/spdy/spdy_protocol.cc b/net/spdy/spdy_protocol.cc
|
| index 2069f8e1aeccb45f39f27d47f4cdb57f5d734868..2895d9be18162f54946ec60f5086dcbaf2a7998f 100644
|
| --- a/net/spdy/spdy_protocol.cc
|
| +++ b/net/spdy/spdy_protocol.cc
|
| @@ -49,6 +49,7 @@ bool SpdyConstants::IsValidFrameType(SpdyMajorVersion version,
|
|
|
| return true;
|
| case SPDY4:
|
| + case SPDY5:
|
| // DATA is the first valid frame.
|
| if (frame_type_field < SerializeFrameType(version, DATA)) {
|
| return false;
|
| @@ -91,6 +92,7 @@ SpdyFrameType SpdyConstants::ParseFrameType(SpdyMajorVersion version,
|
| }
|
| break;
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (frame_type_field) {
|
| case 0:
|
| return DATA;
|
| @@ -148,6 +150,7 @@ int SpdyConstants::SerializeFrameType(SpdyMajorVersion version,
|
| return -1;
|
| }
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (frame_type) {
|
| case DATA:
|
| return 0;
|
| @@ -199,6 +202,7 @@ bool SpdyConstants::IsValidSettingId(SpdyMajorVersion version,
|
|
|
| return true;
|
| case SPDY4:
|
| + case SPDY5:
|
| // HEADER_TABLE_SIZE is the first valid setting id.
|
| if (setting_id_field <
|
| SerializeSettingId(version, SETTINGS_HEADER_TABLE_SIZE)) {
|
| @@ -241,6 +245,7 @@ SpdySettingsIds SpdyConstants::ParseSettingId(SpdyMajorVersion version,
|
| }
|
| break;
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (setting_id_field) {
|
| case 1:
|
| return SETTINGS_HEADER_TABLE_SIZE;
|
| @@ -283,6 +288,7 @@ int SpdyConstants::SerializeSettingId(SpdyMajorVersion version,
|
| return -1;
|
| }
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (id) {
|
| case SETTINGS_HEADER_TABLE_SIZE:
|
| return 1;
|
| @@ -320,6 +326,7 @@ bool SpdyConstants::IsValidRstStreamStatus(SpdyMajorVersion version,
|
|
|
| return true;
|
| case SPDY4:
|
| + case SPDY5:
|
| // NO_ERROR is the first valid status code.
|
| if (rst_stream_status_field <
|
| SerializeRstStreamStatus(version, RST_STREAM_PROTOCOL_ERROR)) {
|
| @@ -379,6 +386,7 @@ SpdyRstStreamStatus SpdyConstants::ParseRstStreamStatus(
|
| }
|
| break;
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (rst_stream_status_field) {
|
| case 1:
|
| return RST_STREAM_PROTOCOL_ERROR;
|
| @@ -441,6 +449,7 @@ int SpdyConstants::SerializeRstStreamStatus(
|
| return -1;
|
| }
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (rst_stream_status) {
|
| case RST_STREAM_PROTOCOL_ERROR:
|
| return 1;
|
| @@ -486,6 +495,7 @@ bool SpdyConstants::IsValidGoAwayStatus(SpdyMajorVersion version,
|
|
|
| return true;
|
| case SPDY4:
|
| + case SPDY5:
|
| // GOAWAY_NO_ERROR is the first valid status.
|
| if (goaway_status_field < SerializeGoAwayStatus(version,
|
| GOAWAY_NO_ERROR)) {
|
| @@ -517,6 +527,7 @@ SpdyGoAwayStatus SpdyConstants::ParseGoAwayStatus(SpdyMajorVersion version,
|
| }
|
| break;
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (goaway_status_field) {
|
| case 0:
|
| return GOAWAY_NO_ERROR;
|
| @@ -552,6 +563,54 @@ SpdyGoAwayStatus SpdyConstants::ParseGoAwayStatus(SpdyMajorVersion version,
|
| return GOAWAY_PROTOCOL_ERROR;
|
| }
|
|
|
| +SpdyMajorVersion SpdyConstants::ParseMajorVersion(int version_number) {
|
| + switch (version_number) {
|
| + case 2:
|
| + return SPDY2;
|
| + case 3:
|
| + return SPDY3;
|
| + case 4:
|
| + return SPDY4;
|
| + case 5:
|
| + return SPDY5;
|
| + default:
|
| + LOG(DFATAL) << "Unsupported SPDY version number: " << version_number;
|
| + return SPDY3;
|
| + }
|
| +}
|
| +
|
| +int SpdyConstants::SerializeMajorVersion(SpdyMajorVersion version) {
|
| + switch (version) {
|
| + case SPDY2:
|
| + return 2;
|
| + case SPDY3:
|
| + return 3;
|
| + case SPDY4:
|
| + return 4;
|
| + case SPDY5:
|
| + return 5;
|
| + default:
|
| + LOG(DFATAL) << "Unsupported SPDY major version: " << version;
|
| + return -1;
|
| + }
|
| +}
|
| +
|
| +std::string SpdyConstants::GetVersionString(SpdyMajorVersion version) {
|
| + switch (version) {
|
| + case SPDY2:
|
| + return "spdy/2";
|
| + case SPDY3:
|
| + return "spdy/3";
|
| + case SPDY4:
|
| + return "spdy/4";
|
| + case SPDY5:
|
| + return "spdy/5";
|
| + default:
|
| + LOG(DFATAL) << "Unsupported SPDY major version: " << version;
|
| + return "spdy/3";
|
| + }
|
| +}
|
| +
|
| int SpdyConstants::SerializeGoAwayStatus(SpdyMajorVersion version,
|
| SpdyGoAwayStatus status) {
|
| switch (version) {
|
| @@ -569,6 +628,7 @@ int SpdyConstants::SerializeGoAwayStatus(SpdyMajorVersion version,
|
| return -1;
|
| }
|
| case SPDY4:
|
| + case SPDY5:
|
| switch (status) {
|
| case GOAWAY_NO_ERROR:
|
| return 0;
|
| @@ -612,6 +672,7 @@ size_t SpdyConstants::GetControlFrameHeaderSize(SpdyMajorVersion version) {
|
| case SPDY2:
|
| case SPDY3:
|
| case SPDY4:
|
| + case SPDY5:
|
| return 8;
|
| }
|
| LOG(DFATAL) << "Unhandled SPDY version.";
|
|
|