forked from quic-go/quic-go
Send a gQUIC Version Negotiation Packet, if the client packet has a Public Header. If the client has an IETF draft style header, send an IETF draft style Version Negotiation Packet.
33 lines
1.2 KiB
Go
33 lines
1.2 KiB
Go
package wire
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/lucas-clemente/quic-go/internal/protocol"
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Version Negotiation Packets", func() {
|
|
It("writes for gQUIC", func() {
|
|
versions := []protocol.VersionNumber{1001, 1003}
|
|
data := ComposeGQUICVersionNegotiation(0x1337, versions)
|
|
hdr, err := parsePublicHeader(bytes.NewReader(data), protocol.PerspectiveServer, protocol.VersionUnknown)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(hdr.VersionFlag).To(BeTrue())
|
|
Expect(hdr.ConnectionID).To(Equal(protocol.ConnectionID(0x1337)))
|
|
Expect(hdr.SupportedVersions).To(Equal(versions))
|
|
})
|
|
|
|
It("writes IETF draft style", func() {
|
|
versions := []protocol.VersionNumber{1001, 1003}
|
|
data := ComposeVersionNegotiation(0x1337, 0x42, versions)
|
|
hdr, err := parseHeader(bytes.NewReader(data), protocol.PerspectiveServer)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(hdr.Type).To(Equal(protocol.PacketTypeVersionNegotiation))
|
|
Expect(hdr.ConnectionID).To(Equal(protocol.ConnectionID(0x1337)))
|
|
Expect(hdr.PacketNumber).To(Equal(protocol.PacketNumber(0x42)))
|
|
Expect(hdr.SupportedVersions).To(Equal(versions))
|
|
})
|
|
})
|