@@ -8,15 +8,6 @@ import (
88 "golang.org/x/net/http2/hpack"
99)
1010
11- // A decodingError represents a QPACK decoding error as defined by the specification
12- type decodingError struct {
13- err error
14- }
15-
16- func (de decodingError ) Error () string {
17- return fmt .Sprintf ("decoding error: %v" , de .err )
18- }
19-
2011// An invalidIndexError is returned when decoding encounters an invalid index
2112// (e.g., an index that is out of bounds for the static table).
2213type invalidIndexError int
@@ -25,7 +16,7 @@ func (e invalidIndexError) Error() string {
2516 return fmt .Sprintf ("invalid indexed representation index %d" , int (e ))
2617}
2718
28- var errNoDynamicTable = decodingError { errors .New ("no dynamic table" )}
19+ var errNoDynamicTable = errors .New ("no dynamic table" )
2920
3021// A Decoder decodes QPACK header blocks.
3122// A Decoder can be reused to decode multiple header blocks on different streams
@@ -59,7 +50,7 @@ func (d *Decoder) Decode(p []byte) DecodeFunc {
5950 p = rest
6051 readRequiredInsertCount = true
6152 if requiredInsertCount != 0 {
62- return HeaderField {}, decodingError { errors .New ("expected Required Insert Count to be zero" )}
53+ return HeaderField {}, errors .New ("expected Required Insert Count to be zero" )
6354 }
6455 }
6556
@@ -71,7 +62,7 @@ func (d *Decoder) Decode(p []byte) DecodeFunc {
7162 p = rest
7263 readDeltaBase = true
7364 if base != 0 {
74- return HeaderField {}, decodingError { errors .New ("expected Base to be zero" )}
65+ return HeaderField {}, errors .New ("expected Base to be zero" )
7566 }
7667 }
7768
@@ -111,7 +102,7 @@ func (d *Decoder) parseIndexedHeaderField(buf []byte) (_ HeaderField, rest []byt
111102 }
112103 hf , ok := d .at (index )
113104 if ! ok {
114- return HeaderField {}, buf , decodingError { invalidIndexError (index )}
105+ return HeaderField {}, buf , invalidIndexError (index )
115106 }
116107 return hf , rest , nil
117108}
@@ -130,11 +121,11 @@ func (d *Decoder) parseLiteralHeaderField(buf []byte) (_ HeaderField, rest []byt
130121 }
131122 hf , ok := d .at (index )
132123 if ! ok {
133- return HeaderField {}, buf , decodingError { invalidIndexError (index )}
124+ return HeaderField {}, buf , invalidIndexError (index )
134125 }
135126 buf = rest
136127 if len (buf ) == 0 {
137- return HeaderField {}, buf , decodingError { errors . New ( "truncated literal header field" )}
128+ return HeaderField {}, buf , io . ErrUnexpectedEOF
138129 }
139130 usesHuffman := buf [0 ]& 0x80 > 0
140131 val , rest , err := d .readString (rest , 7 , usesHuffman )
@@ -153,7 +144,7 @@ func (d *Decoder) parseLiteralHeaderFieldWithoutNameReference(buf []byte) (_ Hea
153144 }
154145 buf = rest
155146 if len (buf ) == 0 {
156- return HeaderField {}, rest , decodingError { errors . New ( "truncated literal header field without name reference" )}
147+ return HeaderField {}, rest , io . ErrUnexpectedEOF
157148 }
158149 usesHuffmanForVal := buf [0 ]& 0x80 > 0
159150 val , rest , err := d .readString (buf , 7 , usesHuffmanForVal )
@@ -169,7 +160,7 @@ func (d *Decoder) readString(buf []byte, n uint8, usesHuffman bool) (string, []b
169160 return "" , nil , err
170161 }
171162 if uint64 (len (buf )) < l {
172- return "" , nil , decodingError { errors . New ( "truncated string" )}
163+ return "" , nil , io . ErrUnexpectedEOF
173164 }
174165 var val string
175166 if usesHuffman {
0 commit comments