forked from quic-go/quic-go
@@ -17,6 +17,10 @@ import (
|
||||
"github.com/lucas-clemente/quic-go/utils"
|
||||
)
|
||||
|
||||
type unpacker interface {
|
||||
Unpack(publicHeaderBinary []byte, hdr *publicHeader, r *bytes.Reader) (*unpackedPacket, error)
|
||||
}
|
||||
|
||||
type receivedPacket struct {
|
||||
remoteAddr interface{}
|
||||
publicHeader *publicHeader
|
||||
@@ -60,7 +64,7 @@ type Session struct {
|
||||
// TODO: remove
|
||||
flowController flowcontrol.FlowController // connection level flow controller
|
||||
|
||||
unpacker *packetUnpacker
|
||||
unpacker unpacker
|
||||
packer *packetPacker
|
||||
|
||||
cryptoSetup *handshake.CryptoSetup
|
||||
|
||||
@@ -34,6 +34,15 @@ func (m *mockConnection) write(p []byte) error {
|
||||
func (*mockConnection) setCurrentRemoteAddr(addr interface{}) {}
|
||||
func (*mockConnection) IP() net.IP { return nil }
|
||||
|
||||
type mockUnpacker struct{}
|
||||
|
||||
func (m *mockUnpacker) Unpack(publicHeaderBinary []byte, hdr *publicHeader, r *bytes.Reader) (*unpackedPacket, error) {
|
||||
return &unpackedPacket{
|
||||
entropyBit: false,
|
||||
frames: nil,
|
||||
}, nil
|
||||
}
|
||||
|
||||
var _ = Describe("Session", func() {
|
||||
var (
|
||||
session *Session
|
||||
@@ -392,6 +401,33 @@ var _ = Describe("Session", func() {
|
||||
})
|
||||
})
|
||||
|
||||
Context("receiving packets", func() {
|
||||
var hdr *publicHeader
|
||||
|
||||
BeforeEach(func() {
|
||||
session.unpacker = &mockUnpacker{}
|
||||
hdr = &publicHeader{PacketNumberLen: protocol.PacketNumberLen6}
|
||||
})
|
||||
|
||||
It("sets the lastRcvdPacketNumber", func() {
|
||||
hdr.PacketNumber = 5
|
||||
err := session.handlePacketImpl(nil, hdr, nil)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(session.lastRcvdPacketNumber).To(Equal(protocol.PacketNumber(5)))
|
||||
})
|
||||
|
||||
It("sets the lastRcvdPacketNumber, for an out-of-order packet", func() {
|
||||
hdr.PacketNumber = 5
|
||||
err := session.handlePacketImpl(nil, hdr, nil)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(session.lastRcvdPacketNumber).To(Equal(protocol.PacketNumber(5)))
|
||||
hdr.PacketNumber = 3
|
||||
err = session.handlePacketImpl(nil, hdr, nil)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(session.lastRcvdPacketNumber).To(Equal(protocol.PacketNumber(3)))
|
||||
})
|
||||
})
|
||||
|
||||
Context("sending packets", func() {
|
||||
It("sends ack frames", func() {
|
||||
packetNumber := protocol.PacketNumber(0x0135)
|
||||
|
||||
Reference in New Issue
Block a user