diff --git a/client_test.go b/client_test.go index 3f65943e..d3a30fef 100644 --- a/client_test.go +++ b/client_test.go @@ -49,12 +49,11 @@ var _ = Describe("Client", func() { // generate a packet sent by the server that accepts the QUIC version suggested by the client acceptClientVersionPacket := func(connID protocol.ConnectionID) []byte { b := &bytes.Buffer{} - err := (&wire.Header{ + Expect((&wire.Header{ DestConnectionID: connID, PacketNumber: 1, PacketNumberLen: 1, - }).Write(b, protocol.PerspectiveServer, protocol.VersionWhatever) - Expect(err).ToNot(HaveOccurred()) + }).Write(b, protocol.VersionWhatever)).To(Succeed()) return b.Bytes() } diff --git a/integrationtests/tools/proxy/proxy_test.go b/integrationtests/tools/proxy/proxy_test.go index 03c9fed3..904c480c 100644 --- a/integrationtests/tools/proxy/proxy_test.go +++ b/integrationtests/tools/proxy/proxy_test.go @@ -28,7 +28,7 @@ var _ = Describe("QUIC Proxy", func() { DestConnectionID: protocol.ConnectionID{0xde, 0xad, 0xbe, 0xef, 0, 0, 0x13, 0x37}, SrcConnectionID: protocol.ConnectionID{0xde, 0xad, 0xbe, 0xef, 0, 0, 0x13, 0x37}, } - hdr.Write(b, protocol.PerspectiveServer, protocol.VersionWhatever) + Expect(hdr.Write(b, protocol.VersionWhatever)).To(Succeed()) raw := b.Bytes() raw = append(raw, payload...) return raw diff --git a/internal/wire/header.go b/internal/wire/header.go index 36255fdd..22849973 100644 --- a/internal/wire/header.go +++ b/internal/wire/header.go @@ -33,7 +33,7 @@ type Header struct { } // Write writes the Header. -func (h *Header) Write(b *bytes.Buffer, pers protocol.Perspective, ver protocol.VersionNumber) error { +func (h *Header) Write(b *bytes.Buffer, ver protocol.VersionNumber) error { if h.IsLongHeader { return h.writeLongHeader(b, ver) } diff --git a/internal/wire/header_parser_test.go b/internal/wire/header_parser_test.go index 9477723a..b14c6be4 100644 --- a/internal/wire/header_parser_test.go +++ b/internal/wire/header_parser_test.go @@ -179,15 +179,14 @@ var _ = Describe("Header Parsing", func() { It("rejects packets sent with an unknown packet type", func() { srcConnID := protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8} buf := &bytes.Buffer{} - err := (&Header{ + Expect((&Header{ IsLongHeader: true, Type: 42, SrcConnectionID: srcConnID, Version: 0x10203040, PacketNumber: 1, PacketNumberLen: protocol.PacketNumberLen1, - }).Write(buf, protocol.PerspectiveClient, protocol.VersionTLS) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, protocol.VersionTLS)).To(Succeed()) b := bytes.NewReader(buf.Bytes()) iHdr, err := ParseInvariantHeader(b, 0) Expect(err).ToNot(HaveOccurred()) diff --git a/internal/wire/header_test.go b/internal/wire/header_test.go index b6c8c34e..9ad96823 100644 --- a/internal/wire/header_test.go +++ b/internal/wire/header_test.go @@ -31,7 +31,7 @@ var _ = Describe("Header", func() { srcConnID := protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8} It("writes", func() { - err := (&Header{ + Expect((&Header{ IsLongHeader: true, Type: 0x5, DestConnectionID: protocol.ConnectionID{0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe}, @@ -40,8 +40,7 @@ var _ = Describe("Header", func() { PacketNumber: 0xdecaf, PacketNumberLen: protocol.PacketNumberLen4, Version: 0x1020304, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, versionIETFHeader)).To(Succeed()) expected := []byte{ 0x80 ^ 0x5, 0x1, 0x2, 0x3, 0x4, // version number @@ -63,7 +62,7 @@ var _ = Describe("Header", func() { PacketNumber: 0xdecafbad, PacketNumberLen: protocol.PacketNumberLen4, Version: 0x1020304, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) + }).Write(buf, versionIETFHeader) Expect(err).To(MatchError("invalid connection ID length: 3 bytes")) }) @@ -76,12 +75,12 @@ var _ = Describe("Header", func() { PacketNumber: 0xdecafbad, PacketNumberLen: protocol.PacketNumberLen4, Version: 0x1020304, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) + }).Write(buf, versionIETFHeader) Expect(err).To(MatchError("invalid connection ID length: 19 bytes")) }) It("writes a header with an 18 byte connection ID", func() { - err := (&Header{ + Expect((&Header{ IsLongHeader: true, Type: 0x5, SrcConnectionID: srcConnID, @@ -89,8 +88,7 @@ var _ = Describe("Header", func() { PacketNumber: 0xdecafbad, PacketNumberLen: protocol.PacketNumberLen4, Version: 0x1020304, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Bytes()).To(ContainSubstring(string([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}))) }) @@ -103,7 +101,7 @@ var _ = Describe("Header", func() { PacketNumber: 0xdecafbad, PacketNumberLen: protocol.PacketNumberLen4, Version: 0x1020304, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) + }).Write(buf, versionIETFHeader) Expect(err).ToNot(HaveOccurred()) expectedSubstring := append(encodeVarInt(uint64(len(token))), token...) Expect(buf.Bytes()).To(ContainSubstring(string(expectedSubstring))) @@ -117,7 +115,7 @@ var _ = Describe("Header", func() { Token: token, OrigDestConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8, 9}, Version: 0x1020304, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) + }).Write(buf, versionIETFHeader) Expect(err).ToNot(HaveOccurred()) Expect(buf.Bytes()[:6]).To(Equal([]byte{ 0x80 ^ uint8(protocol.PacketTypeRetry), @@ -136,19 +134,18 @@ var _ = Describe("Header", func() { Token: []byte("foobar"), OrigDestConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}, // connection IDs must be at most 18 bytes long Version: 0x1020304, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) + }).Write(buf, versionIETFHeader) Expect(err).To(MatchError("invalid connection ID length: 19 bytes")) }) }) Context("short header", func() { It("writes a header with connection ID", func() { - err := (&Header{ + Expect((&Header{ DestConnectionID: protocol.ConnectionID{0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}, PacketNumberLen: protocol.PacketNumberLen1, PacketNumber: 0x42, - }).Write(buf, protocol.PerspectiveClient, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Bytes()).To(Equal([]byte{ 0x30, 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37, // connection ID @@ -157,11 +154,10 @@ var _ = Describe("Header", func() { }) It("writes a header without connection ID", func() { - err := (&Header{ + Expect((&Header{ PacketNumberLen: protocol.PacketNumberLen1, PacketNumber: 0x42, - }).Write(buf, protocol.PerspectiveClient, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Bytes()).To(Equal([]byte{ 0x30, 0x42, // packet number @@ -169,22 +165,20 @@ var _ = Describe("Header", func() { }) It("writes a header with a 2 byte packet number", func() { - err := (&Header{ + Expect((&Header{ PacketNumberLen: protocol.PacketNumberLen2, PacketNumber: 0x765, - }).Write(buf, protocol.PerspectiveClient, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, versionIETFHeader)).To(Succeed()) expected := []byte{0x30} expected = appendPacketNumber(expected, 0x765, protocol.PacketNumberLen2) Expect(buf.Bytes()).To(Equal(expected)) }) It("writes a header with a 4 byte packet number", func() { - err := (&Header{ + Expect((&Header{ PacketNumberLen: protocol.PacketNumberLen4, PacketNumber: 0x123456, - }).Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, versionIETFHeader)).To(Succeed()) expected := []byte{0x30} expected = appendPacketNumber(expected, 0x123456, protocol.PacketNumberLen4) Expect(buf.Bytes()).To(Equal(expected)) @@ -194,17 +188,16 @@ var _ = Describe("Header", func() { err := (&Header{ PacketNumberLen: 3, PacketNumber: 0xdecafbad, - }).Write(buf, protocol.PerspectiveClient, versionIETFHeader) + }).Write(buf, versionIETFHeader) Expect(err).To(MatchError("invalid packet number length: 3")) }) It("writes the Key Phase Bit", func() { - err := (&Header{ + Expect((&Header{ KeyPhase: 1, PacketNumberLen: protocol.PacketNumberLen1, PacketNumber: 0x42, - }).Write(buf, protocol.PerspectiveClient, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Bytes()).To(Equal([]byte{ 0x30 | 0x40, 0x42, // packet number @@ -230,8 +223,7 @@ var _ = Describe("Header", func() { } expectedLen := 1 /* type byte */ + 4 /* version */ + 1 /* conn ID len */ + 8 /* dest conn id */ + 8 /* src conn id */ + 1 /* short len */ + 1 /* packet number */ Expect(h.GetLength(versionIETFHeader)).To(BeEquivalentTo(expectedLen)) - err := h.Write(buf, protocol.PerspectiveClient, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(expectedLen)) }) @@ -245,8 +237,7 @@ var _ = Describe("Header", func() { } expectedLen := 1 /* type byte */ + 4 /* version */ + 1 /* conn ID len */ + 8 /* dest conn id */ + 8 /* src conn id */ + 2 /* long len */ + 2 /* packet number */ Expect(h.GetLength(versionIETFHeader)).To(BeEquivalentTo(expectedLen)) - err := h.Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(expectedLen)) }) @@ -261,8 +252,7 @@ var _ = Describe("Header", func() { } expectedLen := 1 /* type byte */ + 4 /* version */ + 1 /* conn ID len */ + 8 /* dest conn id */ + 4 /* src conn id */ + 1 /* token length */ + 2 /* long len */ + 2 /* packet number */ Expect(h.GetLength(versionIETFHeader)).To(BeEquivalentTo(expectedLen)) - err := h.Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(expectedLen)) }) @@ -278,8 +268,7 @@ var _ = Describe("Header", func() { } expectedLen := 1 /* type byte */ + 4 /* version */ + 1 /* conn ID len */ + 8 /* dest conn id */ + 4 /* src conn id */ + 1 /* token length */ + 3 /* token */ + 2 /* long len */ + 2 /* packet number */ Expect(h.GetLength(versionIETFHeader)).To(BeEquivalentTo(expectedLen)) - err := h.Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(expectedLen)) }) @@ -289,32 +278,28 @@ var _ = Describe("Header", func() { DestConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8}, } Expect(h.GetLength(versionIETFHeader)).To(Equal(protocol.ByteCount(1 + 8 + 1))) - err := h.Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(10)) }) It("has the right length for a short header without a connection ID", func() { h := &Header{PacketNumberLen: protocol.PacketNumberLen1} Expect(h.GetLength(versionIETFHeader)).To(Equal(protocol.ByteCount(1 + 1))) - err := h.Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(2)) }) It("has the right length for a short header with a 2 byte packet number", func() { h := &Header{PacketNumberLen: protocol.PacketNumberLen2} Expect(h.GetLength(versionIETFHeader)).To(Equal(protocol.ByteCount(1 + 2))) - err := h.Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(3)) }) It("has the right length for a short header with a 5 byte packet number", func() { h := &Header{PacketNumberLen: protocol.PacketNumberLen4} Expect(h.GetLength(versionIETFHeader)).To(Equal(protocol.ByteCount(1 + 4))) - err := h.Write(buf, protocol.PerspectiveServer, versionIETFHeader) - Expect(err).ToNot(HaveOccurred()) + Expect(h.Write(buf, versionIETFHeader)).To(Succeed()) Expect(buf.Len()).To(Equal(5)) }) }) diff --git a/packet_handler_map_test.go b/packet_handler_map_test.go index 1ab43de8..43a56af4 100644 --- a/packet_handler_map_test.go +++ b/packet_handler_map_test.go @@ -21,15 +21,14 @@ var _ = Describe("Packet Handler Map", func() { getPacket := func(connID protocol.ConnectionID) []byte { buf := &bytes.Buffer{} - err := (&wire.Header{ + Expect((&wire.Header{ IsLongHeader: true, Type: protocol.PacketTypeHandshake, DestConnectionID: connID, PacketNumberLen: protocol.PacketNumberLen1, Length: 1, Version: protocol.VersionWhatever, - }).Write(buf, protocol.PerspectiveServer, protocol.VersionWhatever) - Expect(err).ToNot(HaveOccurred()) + }).Write(buf, protocol.VersionWhatever)).To(Succeed()) return buf.Bytes() } @@ -140,7 +139,7 @@ var _ = Describe("Packet Handler Map", func() { Version: protocol.VersionWhatever, } buf := &bytes.Buffer{} - Expect(hdr.Write(buf, protocol.PerspectiveServer, protocol.VersionWhatever)).To(Succeed()) + Expect(hdr.Write(buf, protocol.VersionWhatever)).To(Succeed()) buf.Write(bytes.Repeat([]byte{0}, 500-2 /* for packet number length */)) err := handler.handlePacket(nil, buf.Bytes()) @@ -162,7 +161,7 @@ var _ = Describe("Packet Handler Map", func() { Version: protocol.VersionWhatever, } buf := &bytes.Buffer{} - Expect(hdr.Write(buf, protocol.PerspectiveServer, protocol.VersionWhatever)).To(Succeed()) + Expect(hdr.Write(buf, protocol.VersionWhatever)).To(Succeed()) Expect(handler.handlePacket(nil, buf.Bytes())).To(MatchError("packet length (3 bytes) shorter than packet number (4 bytes)")) }) @@ -185,7 +184,7 @@ var _ = Describe("Packet Handler Map", func() { Version: protocol.VersionWhatever, } buf := &bytes.Buffer{} - Expect(hdr.Write(buf, protocol.PerspectiveServer, protocol.VersionWhatever)).To(Succeed()) + Expect(hdr.Write(buf, protocol.VersionWhatever)).To(Succeed()) buf.Write(bytes.Repeat([]byte{0}, 500)) Expect(handler.handlePacket(nil, buf.Bytes())).To(Succeed()) }) diff --git a/packet_packer.go b/packet_packer.go index e1510341..e34a516b 100644 --- a/packet_packer.go +++ b/packet_packer.go @@ -450,7 +450,7 @@ func (p *packetPacker) writeAndSealPacket( } } - if err := header.Write(buffer, p.perspective, p.version); err != nil { + if err := header.Write(buffer, p.version); err != nil { return nil, err } payloadStartIndex := buffer.Len() diff --git a/server.go b/server.go index 5f862c5b..75500a69 100644 --- a/server.go +++ b/server.go @@ -443,7 +443,7 @@ func (s *server) sendRetry(remoteAddr net.Addr, hdr *wire.Header) error { s.logger.Debugf("Changing connection ID to %s.\n-> Sending Retry", connID) replyHdr.Log(s.logger) buf := &bytes.Buffer{} - if err := replyHdr.Write(buf, protocol.PerspectiveServer, hdr.Version); err != nil { + if err := replyHdr.Write(buf, hdr.Version); err != nil { return err } if _, err := s.conn.WriteTo(buf.Bytes(), remoteAddr); err != nil {