forked from quic-go/quic-go
qlog received Retry packets
This commit is contained in:
@@ -83,3 +83,16 @@ func (e eventPacketReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
|||||||
enc.BoolKeyOmitEmpty("is_coalesced", e.IsCoalesced)
|
enc.BoolKeyOmitEmpty("is_coalesced", e.IsCoalesced)
|
||||||
enc.StringKeyOmitEmpty("trigger", e.Trigger)
|
enc.StringKeyOmitEmpty("trigger", e.Trigger)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type eventRetryReceived struct {
|
||||||
|
Header packetHeader
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e eventRetryReceived) Category() category { return categoryTransport }
|
||||||
|
func (e eventRetryReceived) Name() string { return "packet_received" }
|
||||||
|
func (e eventRetryReceived) IsNil() bool { return false }
|
||||||
|
|
||||||
|
func (e eventRetryReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
||||||
|
enc.StringKey("packet_type", packetTypeRetry.String())
|
||||||
|
enc.ObjectKey("header", e.Header)
|
||||||
|
}
|
||||||
|
|||||||
@@ -28,9 +28,8 @@ func getPacketType(hdr *wire.ExtendedHeader) packetType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func transformHeader(hdr *wire.ExtendedHeader) *packetHeader {
|
func transformHeader(hdr *wire.Header) *packetHeader {
|
||||||
return &packetHeader{
|
return &packetHeader{
|
||||||
PacketNumber: hdr.PacketNumber,
|
|
||||||
PayloadLength: hdr.Length,
|
PayloadLength: hdr.Length,
|
||||||
SrcConnectionID: hdr.SrcConnectionID,
|
SrcConnectionID: hdr.SrcConnectionID,
|
||||||
DestConnectionID: hdr.DestConnectionID,
|
DestConnectionID: hdr.DestConnectionID,
|
||||||
@@ -38,6 +37,12 @@ func transformHeader(hdr *wire.ExtendedHeader) *packetHeader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func transformExtendedHeader(hdr *wire.ExtendedHeader) *packetHeader {
|
||||||
|
h := transformHeader(&hdr.Header)
|
||||||
|
h.PacketNumber = hdr.PacketNumber
|
||||||
|
return h
|
||||||
|
}
|
||||||
|
|
||||||
type packetHeader struct {
|
type packetHeader struct {
|
||||||
PacketNumber protocol.PacketNumber
|
PacketNumber protocol.PacketNumber
|
||||||
PacketSize protocol.ByteCount
|
PacketSize protocol.ByteCount
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ var _ = Describe("Packet Header", func() {
|
|||||||
check := func(hdr *wire.ExtendedHeader, expected map[string]interface{}) {
|
check := func(hdr *wire.ExtendedHeader, expected map[string]interface{}) {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
enc := gojay.NewEncoder(buf)
|
enc := gojay.NewEncoder(buf)
|
||||||
ExpectWithOffset(1, enc.Encode(transformHeader(hdr))).To(Succeed())
|
ExpectWithOffset(1, enc.Encode(transformExtendedHeader(hdr))).To(Succeed())
|
||||||
data := buf.Bytes()
|
data := buf.Bytes()
|
||||||
ExpectWithOffset(1, json.Valid(data)).To(BeTrue())
|
ExpectWithOffset(1, json.Valid(data)).To(BeTrue())
|
||||||
checkEncoding(data, expected)
|
checkEncoding(data, expected)
|
||||||
|
|||||||
14
qlog/qlog.go
14
qlog/qlog.go
@@ -13,6 +13,7 @@ import (
|
|||||||
type Tracer interface {
|
type Tracer interface {
|
||||||
Export() error
|
Export() error
|
||||||
SentPacket(time.Time, *wire.ExtendedHeader, *wire.AckFrame, []wire.Frame)
|
SentPacket(time.Time, *wire.ExtendedHeader, *wire.AckFrame, []wire.Frame)
|
||||||
|
ReceivedRetry(time.Time, *wire.Header)
|
||||||
ReceivedPacket(time.Time, *wire.ExtendedHeader, []wire.Frame)
|
ReceivedPacket(time.Time, *wire.ExtendedHeader, []wire.Frame)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +72,7 @@ func (t *tracer) SentPacket(time time.Time, hdr *wire.ExtendedHeader, ack *wire.
|
|||||||
Time: time,
|
Time: time,
|
||||||
eventDetails: eventPacketSent{
|
eventDetails: eventPacketSent{
|
||||||
PacketType: getPacketType(hdr),
|
PacketType: getPacketType(hdr),
|
||||||
Header: *transformHeader(hdr),
|
Header: *transformExtendedHeader(hdr),
|
||||||
Frames: fs,
|
Frames: fs,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -86,8 +87,17 @@ func (t *tracer) ReceivedPacket(time time.Time, hdr *wire.ExtendedHeader, frames
|
|||||||
Time: time,
|
Time: time,
|
||||||
eventDetails: eventPacketReceived{
|
eventDetails: eventPacketReceived{
|
||||||
PacketType: getPacketType(hdr),
|
PacketType: getPacketType(hdr),
|
||||||
Header: *transformHeader(hdr),
|
Header: *transformExtendedHeader(hdr),
|
||||||
Frames: fs,
|
Frames: fs,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *tracer) ReceivedRetry(time time.Time, hdr *wire.Header) {
|
||||||
|
t.events = append(t.events, event{
|
||||||
|
Time: time,
|
||||||
|
eventDetails: eventRetryReceived{
|
||||||
|
Header: *transformHeader(hdr),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -159,5 +159,26 @@ var _ = Describe("Tracer", func() {
|
|||||||
Expect(ev).To(HaveKey("frames"))
|
Expect(ev).To(HaveKey("frames"))
|
||||||
Expect(ev["frames"].([]interface{})).To(HaveLen(2))
|
Expect(ev["frames"].([]interface{})).To(HaveLen(2))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("records a received Retry packet", func() {
|
||||||
|
now := time.Now()
|
||||||
|
tracer.ReceivedRetry(
|
||||||
|
now,
|
||||||
|
&wire.Header{
|
||||||
|
IsLongHeader: true,
|
||||||
|
Type: protocol.PacketTypeRetry,
|
||||||
|
DestConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8},
|
||||||
|
SrcConnectionID: protocol.ConnectionID{4, 3, 2, 1},
|
||||||
|
Version: protocol.VersionTLS,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
t, category, eventName, ev := exportAndParse()
|
||||||
|
Expect(t).To(BeTemporally("~", now, time.Millisecond))
|
||||||
|
Expect(category).To(Equal("transport"))
|
||||||
|
Expect(eventName).To(Equal("packet_received"))
|
||||||
|
Expect(ev).To(HaveKeyWithValue("packet_type", "retry"))
|
||||||
|
Expect(ev).To(HaveKey("header"))
|
||||||
|
Expect(ev).ToNot(HaveKey("frames"))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -791,6 +791,9 @@ func (s *session) handleRetryPacket(hdr *wire.Header, data []byte) bool /* was t
|
|||||||
}
|
}
|
||||||
s.logger.Debugf("<- Received Retry")
|
s.logger.Debugf("<- Received Retry")
|
||||||
s.logger.Debugf("Switching destination connection ID to: %s", hdr.SrcConnectionID)
|
s.logger.Debugf("Switching destination connection ID to: %s", hdr.SrcConnectionID)
|
||||||
|
if s.qlogger != nil {
|
||||||
|
s.qlogger.ReceivedRetry(time.Now(), hdr)
|
||||||
|
}
|
||||||
s.origDestConnID = s.handshakeDestConnID
|
s.origDestConnID = s.handshakeDestConnID
|
||||||
newDestConnID := hdr.SrcConnectionID
|
newDestConnID := hdr.SrcConnectionID
|
||||||
s.receivedRetry = true
|
s.receivedRetry = true
|
||||||
|
|||||||
Reference in New Issue
Block a user