1package wire 2 3import ( 4 "bytes" 5 "io" 6 7 "github.com/lucas-clemente/quic-go/internal/protocol" 8) 9 10// A PathChallengeFrame is a PATH_CHALLENGE frame 11type PathChallengeFrame struct { 12 Data [8]byte 13} 14 15func parsePathChallengeFrame(r *bytes.Reader, _ protocol.VersionNumber) (*PathChallengeFrame, error) { 16 if _, err := r.ReadByte(); err != nil { 17 return nil, err 18 } 19 frame := &PathChallengeFrame{} 20 if _, err := io.ReadFull(r, frame.Data[:]); err != nil { 21 if err == io.ErrUnexpectedEOF { 22 return nil, io.EOF 23 } 24 return nil, err 25 } 26 return frame, nil 27} 28 29func (f *PathChallengeFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error { 30 b.WriteByte(0x1a) 31 b.Write(f.Data[:]) 32 return nil 33} 34 35// Length of a written frame 36func (f *PathChallengeFrame) Length(_ protocol.VersionNumber) protocol.ByteCount { 37 return 1 + 8 38} 39