I accidentally got started with this under Ruby 1.8.7. It was relatively easy to add a small compatibility lib, but...
Some of the existing specs rely on 1.9 ordered hashes. To retain spec coverage, I deconstructed the assembled packet expectations to probe parts of blocks / frames rather than the assembled whole.
In doing so, I noticed that the version of the protocol is incorrect (I think). Even though the current SPDY specification is Draft #2, the protocol version is still one.
Dot-gitignore the dot-rvmrc file
Ruby 1.8.7 compatibility library
Fix NV packets specs in 1.8.7.
Describe SPDY packet frames in more detail instead of attempting to match the whole (which can be subject to the whims of ruby hash ordering)
Reword spec for readability
The "N" in NV is *name*, not key. Sheesh.
Deconstruct the SYN_REPLY expectation.
Match individual parts of the packet. The version of all packets should be one -- even in Draft #2: https://sites.google.com/a/chromium.org/dev/spdy/spdy-protocol/spdy-protocol-draft2\#TOC-Protocol-versioning
PING packet support
RST_STREAM frame support
Hmm, good stuff. The specs are definitely more verbose, but I think better nonetheless.
One gotcha: I'm pretty sure the current protocol version in use is 2. At least, that's what my own browser reports for open connections to Google's services. I think that change needs to be reverted, and then we're good to do a merge.
Real world usage indicates that it is version 2.
The current draft of the protocol say 1, but Chrome appears to be using 2. Stick with the observed version
Interesting. I have yet to get around to trying it out in the browser, but real world trumps draft specifications. Change made.
Extract bytes when testing packets.
Trying to match binary strings by index or range hits too many string incompatibilities between 1.8 and 1.9.