Index: net/spdy/spdy_protocol.h |
diff --git a/net/spdy/spdy_protocol.h b/net/spdy/spdy_protocol.h |
index b02339a155688a2fcd3303a6b2366ed00d74a71f..9549db57eb5e4e99dd3cf6ff9a355937b2c62b70 100644 |
--- a/net/spdy/spdy_protocol.h |
+++ b/net/spdy/spdy_protocol.h |
@@ -379,11 +379,20 @@ enum SpdyRstStreamStatus { |
// Status codes for GOAWAY frames. |
enum SpdyGoAwayStatus { |
- GOAWAY_INVALID = -1, |
GOAWAY_OK = 0, |
+ GOAWAY_NO_ERROR = GOAWAY_OK, |
GOAWAY_PROTOCOL_ERROR = 1, |
GOAWAY_INTERNAL_ERROR = 2, |
- GOAWAY_NUM_STATUS_CODES = 3 // Must be last. |
+ GOAWAY_FLOW_CONTROL_ERROR = 3, |
+ GOAWAY_SETTINGS_TIMEOUT = 4, |
+ GOAWAY_STREAM_CLOSED = 5, |
+ GOAWAY_FRAME_SIZE_ERROR = 6, |
+ GOAWAY_REFUSED_STREAM = 7, |
+ GOAWAY_CANCEL = 8, |
+ GOAWAY_COMPRESSION_ERROR = 9, |
+ GOAWAY_CONNECT_ERROR = 10, |
+ GOAWAY_ENHANCE_YOUR_CALM = 11, |
+ GOAWAY_INADEQUATE_SECURITY = 12 |
}; |
// A SPDY priority is a number between 0 and 7 (inclusive). |
@@ -451,6 +460,24 @@ class NET_EXPORT_PRIVATE SpdyConstants { |
// version). |
static int SerializeRstStreamStatus(SpdyMajorVersion version, |
SpdyRstStreamStatus rst_stream_status); |
+ |
+ // Returns true if a given on-the-wire enumeration of a GOAWAY status code is |
+ // valid for the given protocol version, false otherwise. |
+ static bool IsValidGoAwayStatus(SpdyMajorVersion version, |
+ int goaway_status_field); |
+ |
+ // Parses a GOAWAY status from an on-the-wire enumeration of a given protocol |
+ // version. |
+ // Behavior is undefined for invalid GOAWAY status fields; consumers should |
+ // first use IsValidGoAwayStatus() to verify validity of GOAWAY status fields. |
+ static SpdyGoAwayStatus ParseGoAwayStatus(SpdyMajorVersion version, |
+ int goaway_status_field); |
+ |
+ // Serializes a given GOAWAY status to the on-the-wire enumeration value for |
+ // the given protocol version. |
+ // Returns -1 on failure (I.E. Invalid GOAWAY status for the given version). |
+ static int SerializeGoAwayStatus(SpdyMajorVersion version, |
+ SpdyGoAwayStatus status); |
}; |
class SpdyFrame; |