add support for QUIC 42

QUIC 42 accepts overlapping stream data. We've been doing this for some
time already, so we don't need any additional changes.
This commit is contained in:
Marten Seemann
2018-05-22 12:31:57 +08:00
parent 2a4eb9c132
commit 3370f9fa58
3 changed files with 23 additions and 8 deletions

View File

@@ -13,10 +13,12 @@ var _ = Describe("Version", func() {
// version numbers taken from the wiki: https://github.com/quicwg/base-drafts/wiki/QUIC-Versions
It("has the right gQUIC version number", func() {
Expect(Version39).To(BeEquivalentTo(0x51303339))
Expect(Version42).To(BeEquivalentTo(0x51303432))
})
It("says if a version is valid", func() {
Expect(IsValidVersion(Version39)).To(BeTrue())
Expect(IsValidVersion(Version42)).To(BeTrue())
Expect(IsValidVersion(VersionTLS)).To(BeTrue())
Expect(IsValidVersion(VersionWhatever)).To(BeFalse())
Expect(IsValidVersion(VersionUnknown)).To(BeFalse())
@@ -25,11 +27,13 @@ var _ = Describe("Version", func() {
It("says if a version supports TLS", func() {
Expect(Version39.UsesTLS()).To(BeFalse())
Expect(Version42.UsesTLS()).To(BeFalse())
Expect(VersionTLS.UsesTLS()).To(BeTrue())
})
It("versions don't have reserved version numbers", func() {
Expect(isReservedVersion(Version39)).To(BeFalse())
Expect(isReservedVersion(Version42)).To(BeFalse())
Expect(isReservedVersion(VersionTLS)).To(BeFalse())
})
@@ -48,6 +52,7 @@ var _ = Describe("Version", func() {
It("has the right representation for the H2 Alt-Svc tag", func() {
Expect(Version39.ToAltSvc()).To(Equal("39"))
Expect(Version42.ToAltSvc()).To(Equal("42"))
Expect(VersionTLS.ToAltSvc()).To(Equal("101"))
// check with unsupported version numbers from the wiki
Expect(VersionNumber(0x51303133).ToAltSvc()).To(Equal("13"))
@@ -57,30 +62,37 @@ var _ = Describe("Version", func() {
It("tells the Stream ID of the crypto stream", func() {
Expect(Version39.CryptoStreamID()).To(Equal(StreamID(1)))
Expect(Version42.CryptoStreamID()).To(Equal(StreamID(1)))
Expect(VersionTLS.CryptoStreamID()).To(Equal(StreamID(0)))
})
It("tells if a version uses the IETF frame types", func() {
Expect(Version39.UsesIETFFrameFormat()).To(BeFalse())
Expect(Version42.UsesIETFFrameFormat()).To(BeFalse())
Expect(VersionTLS.UsesIETFFrameFormat()).To(BeTrue())
})
It("tells if a version uses the IETF frame types", func() {
Expect(Version39.UsesIETFFrameFormat()).To(BeFalse())
Expect(Version42.UsesIETFFrameFormat()).To(BeFalse())
Expect(VersionTLS.UsesIETFFrameFormat()).To(BeTrue())
})
It("tells if a version uses STOP_WAITING frames", func() {
Expect(Version39.UsesStopWaitingFrames()).To(BeTrue())
Expect(Version42.UsesStopWaitingFrames()).To(BeTrue())
Expect(VersionTLS.UsesStopWaitingFrames()).To(BeFalse())
})
It("says if a stream contributes to connection-level flowcontrol, for gQUIC", func() {
Expect(Version39.StreamContributesToConnectionFlowControl(1)).To(BeFalse())
Expect(Version39.StreamContributesToConnectionFlowControl(2)).To(BeTrue())
Expect(Version39.StreamContributesToConnectionFlowControl(3)).To(BeFalse())
Expect(Version39.StreamContributesToConnectionFlowControl(4)).To(BeTrue())
Expect(Version39.StreamContributesToConnectionFlowControl(5)).To(BeTrue())
for _, v := range []VersionNumber{Version39, Version42} {
version := v
Expect(version.StreamContributesToConnectionFlowControl(1)).To(BeFalse())
Expect(version.StreamContributesToConnectionFlowControl(2)).To(BeTrue())
Expect(version.StreamContributesToConnectionFlowControl(3)).To(BeFalse())
Expect(version.StreamContributesToConnectionFlowControl(4)).To(BeTrue())
Expect(version.StreamContributesToConnectionFlowControl(5)).To(BeTrue())
}
})
It("says if a stream contributes to connection-level flowcontrol, for TLS", func() {