Index: net/spdy/buffered_spdy_framer.h |
diff --git a/net/spdy/buffered_spdy_framer.h b/net/spdy/buffered_spdy_framer.h |
index 64aa0f786e04ba2d1a437f10b7dc9e3b5f77c632..426bc5ffb6e98f61437e46b85a6ba9599d359a79 100644 |
--- a/net/spdy/buffered_spdy_framer.h |
+++ b/net/spdy/buffered_spdy_framer.h |
@@ -81,7 +81,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface { |
virtual void OnSettingsAck() {} |
// Called at the completion of parsing SETTINGS id and value tuples. |
- virtual void OnSettingsEnd() {}; |
+ virtual void OnSettingsEnd() {} |
// Called when a PING frame has been parsed. |
virtual void OnPing(SpdyPingId unique_id, bool is_ack) = 0; |
@@ -103,6 +103,12 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface { |
SpdyStreamId promised_stream_id, |
const SpdyHeaderBlock& headers) = 0; |
+ // Called when a frame type we don't recognize is received. |
+ // Return true if this appears to be a valid extension frame, false otherwise. |
+ // We distinguish between extension frames and nonsense by checking |
+ // whether the stream id is valid. |
+ virtual bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) = 0; |
+ |
protected: |
virtual ~BufferedSpdyFramerVisitorInterface() {} |
@@ -163,6 +169,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer |
size_t length, |
bool fin) OVERRIDE; |
virtual void OnContinuation(SpdyStreamId stream_id, bool end) OVERRIDE; |
+ virtual bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) OVERRIDE; |
// SpdyFramer methods. |
size_t ProcessInput(const char* data, size_t len); |