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

@@ -324,7 +324,8 @@ func (e eventKeyRetired) MarshalJSONObject(enc *gojay.Encoder) {
} }
type eventTransportParameters struct { type eventTransportParameters struct {
Owner owner Owner owner
SentBy protocol.Perspective
OriginalDestinationConnectionID protocol.ConnectionID OriginalDestinationConnectionID protocol.ConnectionID
StatelessResetToken *[16]byte StatelessResetToken *[16]byte
@@ -351,11 +352,11 @@ func (e eventTransportParameters) IsNil() bool { return false }
func (e eventTransportParameters) MarshalJSONObject(enc *gojay.Encoder) { func (e eventTransportParameters) MarshalJSONObject(enc *gojay.Encoder) {
enc.StringKey("owner", e.Owner.String()) 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()) enc.StringKey("original_destination_connection_id", connectionID(e.OriginalDestinationConnectionID).String())
} if e.StatelessResetToken != nil {
if e.StatelessResetToken != nil { enc.StringKey("stateless_reset_token", fmt.Sprintf("%x", e.StatelessResetToken[:]))
enc.StringKey("stateless_reset_token", fmt.Sprintf("%x", e.StatelessResetToken[:])) }
} }
enc.BoolKey("disable_active_migration", e.DisableActiveMigration) enc.BoolKey("disable_active_migration", e.DisableActiveMigration)
enc.FloatKeyOmitEmpty("max_idle_timeout", milliseconds(e.MaxIdleTimeout)) enc.FloatKeyOmitEmpty("max_idle_timeout", milliseconds(e.MaxIdleTimeout))

View File

@@ -162,17 +162,22 @@ func (t *tracer) ClosedConnection(r CloseReason) {
} }
func (t *tracer) SentTransportParameters(tp *wire.TransportParameters) { func (t *tracer) SentTransportParameters(tp *wire.TransportParameters) {
t.recordTransportParameters(ownerLocal, tp) t.recordTransportParameters(t.perspective, tp)
} }
func (t *tracer) ReceivedTransportParameters(tp *wire.TransportParameters) { 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.mutex.Lock()
t.recordEvent(time.Now(), &eventTransportParameters{ t.recordEvent(time.Now(), &eventTransportParameters{
Owner: owner, Owner: owner,
SentBy: sentBy,
OriginalDestinationConnectionID: tp.OriginalDestinationConnectionID, OriginalDestinationConnectionID: tp.OriginalDestinationConnectionID,
StatelessResetToken: tp.StatelessResetToken, StatelessResetToken: tp.StatelessResetToken,
DisableActiveMigration: tp.DisableActiveMigration, DisableActiveMigration: tp.DisableActiveMigration,

View File

@@ -206,6 +206,19 @@ var _ = Describe("Tracer", func() {
Expect(ev).To(HaveKeyWithValue("initial_max_streams_uni", float64(20))) 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() { It("records received transport parameters", func() {
tracer.ReceivedTransportParameters(&wire.TransportParameters{}) tracer.ReceivedTransportParameters(&wire.TransportParameters{})
entry := exportAndParseSingle() entry := exportAndParseSingle()
@@ -214,6 +227,7 @@ var _ = Describe("Tracer", func() {
Expect(entry.Name).To(Equal("parameters_set")) Expect(entry.Name).To(Equal("parameters_set"))
ev := entry.Event ev := entry.Event
Expect(ev).To(HaveKeyWithValue("owner", "remote")) Expect(ev).To(HaveKeyWithValue("owner", "remote"))
Expect(ev).ToNot(HaveKey("original_destination_connection_id"))
}) })
It("records a sent packet, without an ACK", func() { It("records a sent packet, without an ACK", func() {