Merge pull request #2496 from lucas-clemente/fix-packet-header-qlogging

fix qlogging of packet headers
This commit is contained in:
Marten Seemann
2020-04-16 15:51:21 +07:00
committed by GitHub
2 changed files with 48 additions and 20 deletions

View File

@@ -46,6 +46,7 @@ func getPacketTypeFromEncryptionLevel(encLevel protocol.EncryptionLevel) PacketT
func transformHeader(hdr *wire.Header) *packetHeader {
return &packetHeader{
PacketType: PacketTypeFromHeader(hdr),
PayloadLength: hdr.Length,
SrcConnectionID: hdr.SrcConnectionID,
DestConnectionID: hdr.DestConnectionID,
@@ -60,6 +61,9 @@ func transformExtendedHeader(hdr *wire.ExtendedHeader) *packetHeader {
}
type packetHeader struct {
// We don't log the packet type as a part of the header yet, see https://github.com/quiclog/internet-drafts/issues/40.
PacketType PacketType
PacketNumber protocol.PacketNumber
PayloadLength protocol.ByteCount
// Size of the QUIC packet (QUIC header + payload).
@@ -72,18 +76,22 @@ type packetHeader struct {
}
func (h packetHeader) MarshalJSONObject(enc *gojay.Encoder) {
enc.Int64KeyOmitEmpty("packet_number", int64(h.PacketNumber))
if h.PacketType != PacketTypeRetry && h.PacketType != PacketTypeVersionNegotiation {
enc.Int64Key("packet_number", int64(h.PacketNumber))
}
enc.Int64KeyOmitEmpty("payload_length", int64(h.PayloadLength))
enc.Int64KeyOmitEmpty("packet_size", int64(h.PacketSize))
if h.Version != 0 {
enc.StringKey("version", versionNumber(h.Version).String())
}
if h.SrcConnectionID.Len() > 0 {
if h.PacketType != PacketType1RTT {
enc.IntKey("scil", h.SrcConnectionID.Len())
enc.StringKey("scid", connectionID(h.SrcConnectionID).String())
if h.SrcConnectionID.Len() > 0 {
enc.StringKey("scid", connectionID(h.SrcConnectionID).String())
}
}
enc.IntKey("dcil", h.DestConnectionID.Len())
if h.DestConnectionID.Len() > 0 {
enc.IntKey("dcil", h.DestConnectionID.Len())
enc.StringKey("dcid", connectionID(h.DestConnectionID).String())
}
}

View File

@@ -80,11 +80,12 @@ var _ = Describe("Packet Header", func() {
checkEncoding(data, expected)
}
It("marshals a header", func() {
It("marshals a header for a 1-RTT packet", func() {
check(
&wire.ExtendedHeader{PacketNumber: 42},
map[string]interface{}{
"packet_number": 42,
"dcil": 0,
},
)
})
@@ -93,11 +94,38 @@ var _ = Describe("Packet Header", func() {
check(
&wire.ExtendedHeader{
PacketNumber: 42,
Header: wire.Header{Length: 123},
Header: wire.Header{
IsLongHeader: true,
Type: protocol.PacketTypeInitial,
Length: 123,
Version: protocol.VersionNumber(0xdecafbad),
},
},
map[string]interface{}{
"packet_number": 42,
"payload_length": 123,
"dcil": 0,
"scil": 0,
"version": "decafbad",
},
)
})
It("marshals a packet with packet number 0", func() {
check(
&wire.ExtendedHeader{
PacketNumber: 0,
Header: wire.Header{
IsLongHeader: true,
Type: protocol.PacketTypeHandshake,
Version: protocol.VersionNumber(0xdecafbad),
},
},
map[string]interface{}{
"packet_number": 0,
"dcil": 0,
"scil": 0,
"version": "decafbad",
},
)
})
@@ -107,18 +135,23 @@ var _ = Describe("Packet Header", func() {
&wire.ExtendedHeader{
PacketNumber: 42,
Header: wire.Header{
IsLongHeader: true,
Type: protocol.PacketTypeHandshake,
SrcConnectionID: protocol.ConnectionID{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff},
Version: protocol.VersionNumber(0xdecafbad),
},
},
map[string]interface{}{
"packet_number": 42,
"dcil": 0,
"scil": 16,
"scid": "00112233445566778899aabbccddeeff",
"version": "decafbad",
},
)
})
It("marshals a header with a destination connection ID", func() {
It("marshals a 1-RTT header with a destination connection ID", func() {
check(
&wire.ExtendedHeader{
PacketNumber: 42,
@@ -131,18 +164,5 @@ var _ = Describe("Packet Header", func() {
},
)
})
It("marshals a header with a version number", func() {
check(
&wire.ExtendedHeader{
PacketNumber: 42,
Header: wire.Header{Version: protocol.VersionNumber(0xdecafbad)},
},
map[string]interface{}{
"packet_number": 42,
"version": "decafbad",
},
)
})
})
})