forked from quic-go/quic-go
qlog the supported versions of a version negotiation packet
This commit is contained in:
@@ -47,6 +47,15 @@ func (e event) MarshalJSONArray(enc *gojay.Encoder) {
|
||||
enc.Object(e.eventDetails)
|
||||
}
|
||||
|
||||
type versions []versionNumber
|
||||
|
||||
func (v versions) IsNil() bool { return false }
|
||||
func (v versions) MarshalJSONArray(enc *gojay.Encoder) {
|
||||
for _, e := range v {
|
||||
enc.AddString(e.String())
|
||||
}
|
||||
}
|
||||
|
||||
type eventConnectionStarted struct {
|
||||
SrcAddr *net.UDPAddr
|
||||
DestAddr *net.UDPAddr
|
||||
@@ -141,7 +150,8 @@ func (e eventRetryReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
}
|
||||
|
||||
type eventVersionNegotiationReceived struct {
|
||||
Header packetHeader
|
||||
Header packetHeader
|
||||
SupportedVersions []versionNumber
|
||||
}
|
||||
|
||||
func (e eventVersionNegotiationReceived) Category() category { return categoryTransport }
|
||||
@@ -151,6 +161,7 @@ func (e eventVersionNegotiationReceived) IsNil() bool { return false }
|
||||
func (e eventVersionNegotiationReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", PacketTypeVersionNegotiation.String())
|
||||
enc.ObjectKey("header", e.Header)
|
||||
enc.ArrayKey("supported_versions", versions(e.SupportedVersions))
|
||||
}
|
||||
|
||||
type eventStatelessResetReceived struct {
|
||||
|
||||
@@ -232,9 +232,14 @@ func (t *tracer) ReceivedRetry(hdr *wire.Header) {
|
||||
}
|
||||
|
||||
func (t *tracer) ReceivedVersionNegotiationPacket(hdr *wire.Header) {
|
||||
versions := make([]versionNumber, len(hdr.SupportedVersions))
|
||||
for i, v := range hdr.SupportedVersions {
|
||||
versions[i] = versionNumber(v)
|
||||
}
|
||||
t.mutex.Lock()
|
||||
t.recordEvent(time.Now(), &eventVersionNegotiationReceived{
|
||||
Header: *transformHeader(hdr),
|
||||
Header: *transformHeader(hdr),
|
||||
SupportedVersions: versions,
|
||||
})
|
||||
t.mutex.Unlock()
|
||||
}
|
||||
|
||||
@@ -328,7 +328,7 @@ var _ = Describe("Tracer", func() {
|
||||
Type: protocol.PacketTypeRetry,
|
||||
DestConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8},
|
||||
SrcConnectionID: protocol.ConnectionID{4, 3, 2, 1},
|
||||
SupportedVersions: []protocol.VersionNumber{13, 37},
|
||||
SupportedVersions: []protocol.VersionNumber{0xdeadbeef, 0xdecafbad},
|
||||
},
|
||||
)
|
||||
entry := exportAndParseSingle()
|
||||
@@ -338,12 +338,14 @@ var _ = Describe("Tracer", func() {
|
||||
ev := entry.Event
|
||||
Expect(ev).To(HaveKeyWithValue("packet_type", "version_negotiation"))
|
||||
Expect(ev).To(HaveKey("header"))
|
||||
Expect(ev).ToNot(HaveKey("frames"))
|
||||
Expect(ev).To(HaveKey("supported_versions"))
|
||||
Expect(ev["supported_versions"].([]interface{})).To(Equal([]interface{}{"deadbeef", "decafbad"}))
|
||||
header := ev["header"]
|
||||
Expect(header).ToNot(HaveKey("packet_number"))
|
||||
Expect(header).ToNot(HaveKey("version"))
|
||||
Expect(header).To(HaveKey("dcid"))
|
||||
Expect(header).To(HaveKey("scid"))
|
||||
Expect(ev).ToNot(HaveKey("frames"))
|
||||
})
|
||||
|
||||
It("records a received Retry packet", func() {
|
||||
|
||||
Reference in New Issue
Block a user