forked from quic-go/quic-go
add support for QUIC 43
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
- Add support for unidirectional streams (for IETF QUIC).
|
- Add support for unidirectional streams (for IETF QUIC).
|
||||||
- Add a `quic.Config` option for the maximum number of incoming streams.
|
- Add a `quic.Config` option for the maximum number of incoming streams.
|
||||||
- Add support for QUIC 42.
|
- Add support for QUIC 42 and 43.
|
||||||
|
|
||||||
## v0.7.0 (2018-02-03)
|
## v0.7.0 (2018-02-03)
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ const (
|
|||||||
const (
|
const (
|
||||||
Version39 VersionNumber = gquicVersion0 + 3*0x100 + 0x9
|
Version39 VersionNumber = gquicVersion0 + 3*0x100 + 0x9
|
||||||
Version42 VersionNumber = gquicVersion0 + 4*0x100 + 0x2
|
Version42 VersionNumber = gquicVersion0 + 4*0x100 + 0x2
|
||||||
|
Version43 VersionNumber = gquicVersion0 + 4*0x100 + 0x3
|
||||||
VersionTLS VersionNumber = 101
|
VersionTLS VersionNumber = 101
|
||||||
VersionWhatever VersionNumber = 0 // for when the version doesn't matter
|
VersionWhatever VersionNumber = 0 // for when the version doesn't matter
|
||||||
VersionUnknown VersionNumber = math.MaxUint32
|
VersionUnknown VersionNumber = math.MaxUint32
|
||||||
@@ -28,6 +29,7 @@ const (
|
|||||||
// SupportedVersions lists the versions that the server supports
|
// SupportedVersions lists the versions that the server supports
|
||||||
// must be in sorted descending order
|
// must be in sorted descending order
|
||||||
var SupportedVersions = []VersionNumber{
|
var SupportedVersions = []VersionNumber{
|
||||||
|
Version43,
|
||||||
Version42,
|
Version42,
|
||||||
Version39,
|
Version39,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,11 +14,13 @@ var _ = Describe("Version", func() {
|
|||||||
It("has the right gQUIC version number", func() {
|
It("has the right gQUIC version number", func() {
|
||||||
Expect(Version39).To(BeEquivalentTo(0x51303339))
|
Expect(Version39).To(BeEquivalentTo(0x51303339))
|
||||||
Expect(Version42).To(BeEquivalentTo(0x51303432))
|
Expect(Version42).To(BeEquivalentTo(0x51303432))
|
||||||
|
Expect(Version43).To(BeEquivalentTo(0x51303433))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("says if a version is valid", func() {
|
It("says if a version is valid", func() {
|
||||||
Expect(IsValidVersion(Version39)).To(BeTrue())
|
Expect(IsValidVersion(Version39)).To(BeTrue())
|
||||||
Expect(IsValidVersion(Version42)).To(BeTrue())
|
Expect(IsValidVersion(Version42)).To(BeTrue())
|
||||||
|
Expect(IsValidVersion(Version43)).To(BeTrue())
|
||||||
Expect(IsValidVersion(VersionTLS)).To(BeTrue())
|
Expect(IsValidVersion(VersionTLS)).To(BeTrue())
|
||||||
Expect(IsValidVersion(VersionWhatever)).To(BeFalse())
|
Expect(IsValidVersion(VersionWhatever)).To(BeFalse())
|
||||||
Expect(IsValidVersion(VersionUnknown)).To(BeFalse())
|
Expect(IsValidVersion(VersionUnknown)).To(BeFalse())
|
||||||
@@ -28,12 +30,14 @@ var _ = Describe("Version", func() {
|
|||||||
It("says if a version supports TLS", func() {
|
It("says if a version supports TLS", func() {
|
||||||
Expect(Version39.UsesTLS()).To(BeFalse())
|
Expect(Version39.UsesTLS()).To(BeFalse())
|
||||||
Expect(Version42.UsesTLS()).To(BeFalse())
|
Expect(Version42.UsesTLS()).To(BeFalse())
|
||||||
|
Expect(Version43.UsesTLS()).To(BeFalse())
|
||||||
Expect(VersionTLS.UsesTLS()).To(BeTrue())
|
Expect(VersionTLS.UsesTLS()).To(BeTrue())
|
||||||
})
|
})
|
||||||
|
|
||||||
It("versions don't have reserved version numbers", func() {
|
It("versions don't have reserved version numbers", func() {
|
||||||
Expect(isReservedVersion(Version39)).To(BeFalse())
|
Expect(isReservedVersion(Version39)).To(BeFalse())
|
||||||
Expect(isReservedVersion(Version42)).To(BeFalse())
|
Expect(isReservedVersion(Version42)).To(BeFalse())
|
||||||
|
Expect(isReservedVersion(Version43)).To(BeFalse())
|
||||||
Expect(isReservedVersion(VersionTLS)).To(BeFalse())
|
Expect(isReservedVersion(VersionTLS)).To(BeFalse())
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -53,6 +57,7 @@ var _ = Describe("Version", func() {
|
|||||||
It("has the right representation for the H2 Alt-Svc tag", func() {
|
It("has the right representation for the H2 Alt-Svc tag", func() {
|
||||||
Expect(Version39.ToAltSvc()).To(Equal("39"))
|
Expect(Version39.ToAltSvc()).To(Equal("39"))
|
||||||
Expect(Version42.ToAltSvc()).To(Equal("42"))
|
Expect(Version42.ToAltSvc()).To(Equal("42"))
|
||||||
|
Expect(Version43.ToAltSvc()).To(Equal("43"))
|
||||||
Expect(VersionTLS.ToAltSvc()).To(Equal("101"))
|
Expect(VersionTLS.ToAltSvc()).To(Equal("101"))
|
||||||
// check with unsupported version numbers from the wiki
|
// check with unsupported version numbers from the wiki
|
||||||
Expect(VersionNumber(0x51303133).ToAltSvc()).To(Equal("13"))
|
Expect(VersionNumber(0x51303133).ToAltSvc()).To(Equal("13"))
|
||||||
@@ -63,29 +68,33 @@ var _ = Describe("Version", func() {
|
|||||||
It("tells the Stream ID of the crypto stream", func() {
|
It("tells the Stream ID of the crypto stream", func() {
|
||||||
Expect(Version39.CryptoStreamID()).To(Equal(StreamID(1)))
|
Expect(Version39.CryptoStreamID()).To(Equal(StreamID(1)))
|
||||||
Expect(Version42.CryptoStreamID()).To(Equal(StreamID(1)))
|
Expect(Version42.CryptoStreamID()).To(Equal(StreamID(1)))
|
||||||
|
Expect(Version43.CryptoStreamID()).To(Equal(StreamID(1)))
|
||||||
Expect(VersionTLS.CryptoStreamID()).To(Equal(StreamID(0)))
|
Expect(VersionTLS.CryptoStreamID()).To(Equal(StreamID(0)))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("tells if a version uses the IETF frame types", func() {
|
It("tells if a version uses the IETF frame types", func() {
|
||||||
Expect(Version39.UsesIETFFrameFormat()).To(BeFalse())
|
Expect(Version39.UsesIETFFrameFormat()).To(BeFalse())
|
||||||
Expect(Version42.UsesIETFFrameFormat()).To(BeFalse())
|
Expect(Version42.UsesIETFFrameFormat()).To(BeFalse())
|
||||||
|
Expect(Version43.UsesIETFFrameFormat()).To(BeFalse())
|
||||||
Expect(VersionTLS.UsesIETFFrameFormat()).To(BeTrue())
|
Expect(VersionTLS.UsesIETFFrameFormat()).To(BeTrue())
|
||||||
})
|
})
|
||||||
|
|
||||||
It("tells if a version uses the IETF frame types", func() {
|
It("tells if a version uses the IETF frame types", func() {
|
||||||
Expect(Version39.UsesIETFFrameFormat()).To(BeFalse())
|
Expect(Version39.UsesIETFFrameFormat()).To(BeFalse())
|
||||||
Expect(Version42.UsesIETFFrameFormat()).To(BeFalse())
|
Expect(Version42.UsesIETFFrameFormat()).To(BeFalse())
|
||||||
|
Expect(Version43.UsesIETFFrameFormat()).To(BeFalse())
|
||||||
Expect(VersionTLS.UsesIETFFrameFormat()).To(BeTrue())
|
Expect(VersionTLS.UsesIETFFrameFormat()).To(BeTrue())
|
||||||
})
|
})
|
||||||
|
|
||||||
It("tells if a version uses STOP_WAITING frames", func() {
|
It("tells if a version uses STOP_WAITING frames", func() {
|
||||||
Expect(Version39.UsesStopWaitingFrames()).To(BeTrue())
|
Expect(Version39.UsesStopWaitingFrames()).To(BeTrue())
|
||||||
Expect(Version42.UsesStopWaitingFrames()).To(BeTrue())
|
Expect(Version42.UsesStopWaitingFrames()).To(BeTrue())
|
||||||
|
Expect(Version43.UsesStopWaitingFrames()).To(BeTrue())
|
||||||
Expect(VersionTLS.UsesStopWaitingFrames()).To(BeFalse())
|
Expect(VersionTLS.UsesStopWaitingFrames()).To(BeFalse())
|
||||||
})
|
})
|
||||||
|
|
||||||
It("says if a stream contributes to connection-level flowcontrol, for gQUIC", func() {
|
It("says if a stream contributes to connection-level flowcontrol, for gQUIC", func() {
|
||||||
for _, v := range []VersionNumber{Version39, Version42} {
|
for _, v := range []VersionNumber{Version39, Version42, Version43} {
|
||||||
version := v
|
version := v
|
||||||
Expect(version.StreamContributesToConnectionFlowControl(1)).To(BeFalse())
|
Expect(version.StreamContributesToConnectionFlowControl(1)).To(BeFalse())
|
||||||
Expect(version.StreamContributesToConnectionFlowControl(2)).To(BeTrue())
|
Expect(version.StreamContributesToConnectionFlowControl(2)).To(BeTrue())
|
||||||
|
|||||||
Reference in New Issue
Block a user