@@ -562,6 +562,37 @@ var _ = Describe("Packet packer", func() {
562562 Expect (buffer .Len ()).ToNot (BeZero ())
563563 })
564564
565+ It ("packs PATH_CHALLENGE and PATH_RESPONSE frames" , func () {
566+ pnManager .EXPECT ().PeekPacketNumber (protocol .Encryption1RTT ).Return (protocol .PacketNumber (0x42 ), protocol .PacketNumberLen2 )
567+ pnManager .EXPECT ().PopPacketNumber (protocol .Encryption1RTT ).Return (protocol .PacketNumber (0x42 ))
568+ sealingManager .EXPECT ().Get1RTTSealer ().Return (getSealer (), nil )
569+ framer .EXPECT ().HasData ().Return (true )
570+ ackFramer .EXPECT ().GetAckFrame (protocol .Encryption1RTT , false )
571+ frames := []ackhandler.Frame {
572+ {Frame : & wire.PathChallengeFrame {}},
573+ {Frame : & wire.PathResponseFrame {}},
574+ {Frame : & wire.DataBlockedFrame {}},
575+ }
576+ expectAppendControlFrames (frames ... )
577+ expectAppendStreamFrames ()
578+ buffer := getPacketBuffer ()
579+ p , err := packer .AppendPacket (buffer , maxPacketSize , protocol .Version1 )
580+ Expect (p ).ToNot (BeNil ())
581+ Expect (err ).ToNot (HaveOccurred ())
582+ Expect (p .Frames ).To (HaveLen (3 ))
583+ for i , f := range p .Frames {
584+ Expect (f ).To (BeAssignableToTypeOf (frames [i ]))
585+ switch f .Frame .(type ) {
586+ case * wire.PathChallengeFrame , * wire.PathResponseFrame :
587+ // This means that the frame won't be retransmitted.
588+ Expect (f .Handler ).To (BeNil ())
589+ default :
590+ Expect (f .Handler ).ToNot (BeNil ())
591+ }
592+ }
593+ Expect (buffer .Len ()).ToNot (BeZero ())
594+ })
595+
565596 It ("packs DATAGRAM frames" , func () {
566597 ackFramer .EXPECT ().GetAckFrame (protocol .Encryption1RTT , true )
567598 pnManager .EXPECT ().PeekPacketNumber (protocol .Encryption1RTT ).Return (protocol .PacketNumber (0x42 ), protocol .PacketNumberLen2 )
0 commit comments