always qlog the original_destination_connection_id for the server's TPs

This commit is contained in:
Marten Seemann
2020-05-24 13:31:49 +07:00
parent b391cce35c
commit 193f18bbe5
3 changed files with 28 additions and 8 deletions

View File

@@ -325,6 +325,7 @@ func (e eventKeyRetired) MarshalJSONObject(enc *gojay.Encoder) {
type eventTransportParameters struct {
Owner owner
SentBy protocol.Perspective
OriginalDestinationConnectionID protocol.ConnectionID
StatelessResetToken *[16]byte
@@ -351,12 +352,12 @@ func (e eventTransportParameters) IsNil() bool { return false }
func (e eventTransportParameters) MarshalJSONObject(enc *gojay.Encoder) {
enc.StringKey("owner", e.Owner.String())
if e.OriginalDestinationConnectionID != nil {
if e.SentBy == protocol.PerspectiveServer {
enc.StringKey("original_destination_connection_id", connectionID(e.OriginalDestinationConnectionID).String())
}
if e.StatelessResetToken != nil {
enc.StringKey("stateless_reset_token", fmt.Sprintf("%x", e.StatelessResetToken[:]))
}
}
enc.BoolKey("disable_active_migration", e.DisableActiveMigration)
enc.FloatKeyOmitEmpty("max_idle_timeout", milliseconds(e.MaxIdleTimeout))
enc.Uint64KeyNullEmpty("max_udp_payload_size", uint64(e.MaxUDPPayloadSize))

View File

@@ -162,17 +162,22 @@ func (t *tracer) ClosedConnection(r CloseReason) {
}
func (t *tracer) SentTransportParameters(tp *wire.TransportParameters) {
t.recordTransportParameters(ownerLocal, tp)
t.recordTransportParameters(t.perspective, tp)
}
func (t *tracer) ReceivedTransportParameters(tp *wire.TransportParameters) {
t.recordTransportParameters(ownerRemote, tp)
t.recordTransportParameters(t.perspective.Opposite(), tp)
}
func (t *tracer) recordTransportParameters(owner owner, tp *wire.TransportParameters) {
func (t *tracer) recordTransportParameters(sentBy protocol.Perspective, tp *wire.TransportParameters) {
owner := ownerLocal
if sentBy != t.perspective {
owner = ownerRemote
}
t.mutex.Lock()
t.recordEvent(time.Now(), &eventTransportParameters{
Owner: owner,
SentBy: sentBy,
OriginalDestinationConnectionID: tp.OriginalDestinationConnectionID,
StatelessResetToken: tp.StatelessResetToken,
DisableActiveMigration: tp.DisableActiveMigration,

View File

@@ -206,6 +206,19 @@ var _ = Describe("Tracer", func() {
Expect(ev).To(HaveKeyWithValue("initial_max_streams_uni", float64(20)))
})
It("records the server's transport parameters, without a stateless reset token", func() {
tracer.SentTransportParameters(&wire.TransportParameters{
OriginalDestinationConnectionID: protocol.ConnectionID{0xde, 0xad, 0xc0, 0xde},
ActiveConnectionIDLimit: 7,
})
entry := exportAndParseSingle()
Expect(entry.Time).To(BeTemporally("~", time.Now(), scaleDuration(10*time.Millisecond)))
Expect(entry.Category).To(Equal("transport"))
Expect(entry.Name).To(Equal("parameters_set"))
ev := entry.Event
Expect(ev).ToNot(HaveKey("stateless_reset_token"))
})
It("records received transport parameters", func() {
tracer.ReceivedTransportParameters(&wire.TransportParameters{})
entry := exportAndParseSingle()
@@ -214,6 +227,7 @@ var _ = Describe("Tracer", func() {
Expect(entry.Name).To(Equal("parameters_set"))
ev := entry.Event
Expect(ev).To(HaveKeyWithValue("owner", "remote"))
Expect(ev).ToNot(HaveKey("original_destination_connection_id"))
})
It("records a sent packet, without an ACK", func() {