From f69709ee0eb3a54fdebe20e0dfc7d28767d6191a Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 27 Mar 2020 20:25:17 +0700 Subject: [PATCH] qlog the packet_received event before any frame-specific events --- session.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/session.go b/session.go index c6d1faf92..af5f9c946 100644 --- a/session.go +++ b/session.go @@ -889,8 +889,12 @@ func (s *session) handleUnpackedPacket(packet *unpackedPacket, rcvTime time.Time if s.traceCallback != nil || s.qlogger != nil { frames = append(frames, frame) } - if err := s.handleFrame(frame, packet.encryptionLevel); err != nil { - return err + // Only process frames now if we're not logging. + // If we're logging, we need to make sure that the packet_received event is logged first. + if s.qlogger == nil { + if err := s.handleFrame(frame, packet.encryptionLevel); err != nil { + return err + } } } @@ -908,6 +912,11 @@ func (s *session) handleUnpackedPacket(packet *unpackedPacket, rcvTime time.Time } if s.qlogger != nil { s.qlogger.ReceivedPacket(packet.hdr, protocol.ByteCount(len(packet.data)), frames) + for _, frame := range frames { + if err := s.handleFrame(frame, packet.encryptionLevel); err != nil { + return err + } + } } return s.receivedPacketHandler.ReceivedPacket(packet.packetNumber, packet.encryptionLevel, rcvTime, isAckEliciting)