forked from quic-go/quic-go
trace arbitrary length Connection IDs for Version Negotiation packets
This commit is contained in:
@@ -212,7 +212,7 @@ func (e eventRetryReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
}
|
||||
|
||||
type eventVersionNegotiationReceived struct {
|
||||
Header packetHeader
|
||||
Header packetHeaderVersionNegotiation
|
||||
SupportedVersions []versionNumber
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ func transformExtendedHeader(hdr *wire.ExtendedHeader) *packetHeader {
|
||||
|
||||
func (h packetHeader) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", packetType(h.PacketType).String())
|
||||
if h.PacketType != logging.PacketTypeRetry && h.PacketType != logging.PacketTypeVersionNegotiation {
|
||||
if h.PacketType != logging.PacketTypeRetry {
|
||||
enc.Int64Key("packet_number", int64(h.PacketNumber))
|
||||
}
|
||||
if h.Version != 0 {
|
||||
@@ -96,6 +96,20 @@ func (h packetHeader) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
}
|
||||
}
|
||||
|
||||
type packetHeaderVersionNegotiation struct {
|
||||
SrcConnectionID logging.ArbitraryLenConnectionID
|
||||
DestConnectionID logging.ArbitraryLenConnectionID
|
||||
}
|
||||
|
||||
func (h packetHeaderVersionNegotiation) IsNil() bool { return false }
|
||||
func (h packetHeaderVersionNegotiation) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", "version_negotiation")
|
||||
enc.IntKey("scil", h.SrcConnectionID.Len())
|
||||
enc.StringKey("scid", h.SrcConnectionID.String())
|
||||
enc.IntKey("dcil", h.DestConnectionID.Len())
|
||||
enc.StringKey("dcid", h.DestConnectionID.String())
|
||||
}
|
||||
|
||||
// a minimal header that only outputs the packet type
|
||||
type packetHeaderWithType struct {
|
||||
PacketType logging.PacketType
|
||||
|
||||
@@ -321,14 +321,17 @@ func (t *connectionTracer) ReceivedRetry(hdr *wire.Header) {
|
||||
t.mutex.Unlock()
|
||||
}
|
||||
|
||||
func (t *connectionTracer) ReceivedVersionNegotiationPacket(hdr *wire.Header, versions []logging.VersionNumber) {
|
||||
func (t *connectionTracer) ReceivedVersionNegotiationPacket(dest, src logging.ArbitraryLenConnectionID, versions []logging.VersionNumber) {
|
||||
ver := make([]versionNumber, len(versions))
|
||||
for i, v := range versions {
|
||||
ver[i] = versionNumber(v)
|
||||
}
|
||||
t.mutex.Lock()
|
||||
t.recordEvent(time.Now(), &eventVersionNegotiationReceived{
|
||||
Header: *transformHeader(hdr),
|
||||
Header: packetHeaderVersionNegotiation{
|
||||
SrcConnectionID: src,
|
||||
DestConnectionID: dest,
|
||||
},
|
||||
SupportedVersions: ver,
|
||||
})
|
||||
t.mutex.Unlock()
|
||||
|
||||
@@ -548,12 +548,8 @@ var _ = Describe("Tracing", func() {
|
||||
|
||||
It("records a received Version Negotiation packet", func() {
|
||||
tracer.ReceivedVersionNegotiationPacket(
|
||||
&logging.Header{
|
||||
IsLongHeader: true,
|
||||
Type: protocol.PacketTypeRetry,
|
||||
DestConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8},
|
||||
SrcConnectionID: protocol.ConnectionID{4, 3, 2, 1},
|
||||
},
|
||||
protocol.ArbitraryLenConnectionID{1, 2, 3, 4, 5, 6, 7, 8},
|
||||
protocol.ArbitraryLenConnectionID{4, 3, 2, 1},
|
||||
[]protocol.VersionNumber{0xdeadbeef, 0xdecafbad},
|
||||
)
|
||||
entry := exportAndParseSingle()
|
||||
@@ -568,8 +564,8 @@ var _ = Describe("Tracing", func() {
|
||||
Expect(header).To(HaveKeyWithValue("packet_type", "version_negotiation"))
|
||||
Expect(header).ToNot(HaveKey("packet_number"))
|
||||
Expect(header).ToNot(HaveKey("version"))
|
||||
Expect(header).To(HaveKey("dcid"))
|
||||
Expect(header).To(HaveKey("scid"))
|
||||
Expect(header).To(HaveKeyWithValue("dcid", "0102030405060708"))
|
||||
Expect(header).To(HaveKeyWithValue("scid", "04030201"))
|
||||
})
|
||||
|
||||
It("records buffered packets", func() {
|
||||
|
||||
Reference in New Issue
Block a user