forked from quic-go/quic-go
Merge pull request #2496 from lucas-clemente/fix-packet-header-qlogging
fix qlogging of packet headers
This commit is contained in:
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user