@@ -58,13 +58,9 @@ impl<R: Read> ChunkedDecoder<R> {
58
58
}
59
59
60
60
fn decode_init ( buffer : Block < ' static > , pos : & Position ) -> io:: Result < DecodeResult > {
61
- dbg ! ( pos) ;
62
- dbg ! ( std:: str :: from_utf8( & buffer[ pos. start..pos. end] ) ) ;
63
-
64
61
use httparse:: Status ;
65
62
match httparse:: parse_chunk_size ( & buffer[ pos. start ..pos. end ] ) {
66
63
Ok ( Status :: Complete ( ( used, chunk_len) ) ) => {
67
- dbg ! ( ( used, chunk_len) ) ;
68
64
let new_pos = Position {
69
65
start : pos. start + used,
70
66
end : pos. end ,
@@ -90,9 +86,6 @@ fn decode_init(buffer: Block<'static>, pos: &Position) -> io::Result<DecodeResul
90
86
}
91
87
92
88
fn decode_chunk_end ( buffer : Block < ' static > , pos : & Position ) -> io:: Result < DecodeResult > {
93
- dbg ! ( pos) ;
94
- dbg ! ( std:: str :: from_utf8( & buffer[ pos. start..pos. end] ) ) ;
95
-
96
89
if pos. len ( ) < 2 {
97
90
return Ok ( DecodeResult :: None ( buffer) ) ;
98
91
}
@@ -119,20 +112,17 @@ fn decode_trailer(buffer: Block<'static>, pos: &Position) -> io::Result<DecodeRe
119
112
120
113
// read headers
121
114
let mut headers = [ httparse:: EMPTY_HEADER ; 16 ] ;
122
- dbg ! ( pos) ;
123
- dbg ! ( std:: str :: from_utf8( & buffer[ pos. start..pos. end] ) ) ;
124
115
125
116
match httparse:: parse_headers ( & buffer[ pos. start ..pos. end ] , & mut headers) {
126
117
Ok ( Status :: Complete ( ( used, headers) ) ) => {
127
- dbg ! ( & headers) ;
128
-
129
118
let headers = headers
130
119
. iter ( )
131
120
. map ( |header| {
132
121
// TODO: error propagation
133
122
let name = HeaderName :: from_str ( header. name ) . unwrap ( ) ;
134
123
let value =
135
- HeaderValue :: from_str ( std:: str:: from_utf8 ( header. value ) . unwrap ( ) ) . unwrap ( ) ;
124
+ HeaderValue :: from_str ( & std:: string:: String :: from_utf8_lossy ( header. value ) )
125
+ . unwrap ( ) ;
136
126
( name, value)
137
127
} )
138
128
. collect ( ) ;
@@ -162,36 +152,24 @@ impl<R: Read + Unpin> ChunkedDecoder<R> {
162
152
current : u64 ,
163
153
len : u64 ,
164
154
) -> io:: Result < DecodeResult > {
165
- dbg ! ( "poll_read_chunk" ) ;
166
- dbg ! ( pos) ;
167
- dbg ! ( std:: str :: from_utf8( & buffer[ pos. start..pos. end] ) ) ;
168
- dbg ! ( len) ;
169
- dbg ! ( current) ;
170
-
171
155
let mut new_pos = pos. clone ( ) ;
172
156
let remaining = ( len - current) as usize ;
173
- let mut to_read = std:: cmp:: min ( remaining, buf. len ( ) ) ;
157
+ let to_read = std:: cmp:: min ( remaining, buf. len ( ) ) ;
174
158
175
159
let mut new_current = current;
176
- let mut start = 0 ;
160
+
161
+ // position into buf
162
+ let mut read = 0 ;
177
163
178
164
// first drain the buffer
179
165
if new_pos. len ( ) > 0 {
180
166
let to_read_buf = std:: cmp:: min ( to_read, pos. len ( ) ) ;
181
- dbg ! ( to_read_buf) ;
182
- dbg ! ( to_read) ;
183
- dbg ! ( new_pos) ;
184
- dbg ! ( std:: str :: from_utf8(
185
- & buffer[ new_pos. start..new_pos. start + to_read_buf]
186
- ) ) ;
187
167
buf[ ..to_read_buf] . copy_from_slice ( & buffer[ new_pos. start ..new_pos. start + to_read_buf] ) ;
188
168
189
- // to_read -= to_read_buf;
190
169
new_pos. start += to_read_buf;
191
170
new_current += to_read_buf as u64 ;
192
- // start += to_read_buf;
171
+ read += to_read_buf;
193
172
194
- let read = new_current as usize - current as usize ;
195
173
let new_state = if new_current == len {
196
174
State :: ChunkEnd
197
175
} else {
@@ -207,55 +185,35 @@ impl<R: Read + Unpin> ChunkedDecoder<R> {
207
185
} ) ;
208
186
}
209
187
210
- while to_read > 0 {
211
- dbg ! ( "poll_read_chunk_loop" ) ;
212
-
213
- dbg ! ( to_read) ;
214
- dbg ! ( start) ;
215
- dbg ! ( new_pos) ;
216
- dbg ! ( new_current) ;
217
-
218
- dbg ! ( "reading" ) ;
219
- let n = match Pin :: new ( & mut self . inner ) . poll_read ( cx, & mut buf[ start..start + to_read] )
220
- {
221
- Poll :: Ready ( val) => val?,
222
- Poll :: Pending => {
223
- dbg ! ( "pending" ) ;
224
- return Ok ( DecodeResult :: Some {
225
- read : 0 ,
226
- new_state : State :: Chunk ( new_current, len) ,
227
- new_pos,
228
- buffer,
229
- pending : true ,
230
- } ) ;
231
- }
232
- } ;
188
+ match Pin :: new ( & mut self . inner ) . poll_read ( cx, & mut buf[ read..read + to_read] ) {
189
+ Poll :: Ready ( val) => {
190
+ let n = val?;
191
+ new_current += n as u64 ;
192
+ read += n;
193
+ let new_state = if new_current == len {
194
+ State :: ChunkEnd
195
+ } else {
196
+ State :: Chunk ( new_current, len)
197
+ } ;
233
198
234
- dbg ! ( n) ;
235
- to_read -= n;
236
- new_current += n as u64 ;
237
- start += n;
199
+ Ok ( DecodeResult :: Some {
200
+ read,
201
+ new_state,
202
+ new_pos,
203
+ buffer,
204
+ pending : false ,
205
+ } )
206
+ }
207
+ Poll :: Pending => {
208
+ return Ok ( DecodeResult :: Some {
209
+ read : 0 ,
210
+ new_state : State :: Chunk ( new_current, len) ,
211
+ new_pos,
212
+ buffer,
213
+ pending : true ,
214
+ } ) ;
215
+ }
238
216
}
239
-
240
- let read = new_current as usize - current as usize ;
241
- let new_state = if new_current == len {
242
- State :: ChunkEnd
243
- } else {
244
- State :: Chunk ( new_current, len)
245
- } ;
246
- dbg ! ( read) ;
247
- dbg ! ( & new_state) ;
248
- dbg ! ( new_current) ;
249
- dbg ! ( len) ;
250
- dbg ! ( current) ;
251
-
252
- Ok ( DecodeResult :: Some {
253
- read,
254
- new_state,
255
- new_pos,
256
- buffer,
257
- pending : false ,
258
- } )
259
217
}
260
218
261
219
fn poll_read_inner (
@@ -265,8 +223,6 @@ impl<R: Read + Unpin> ChunkedDecoder<R> {
265
223
pos : & Position ,
266
224
buf : & mut [ u8 ] ,
267
225
) -> io:: Result < DecodeResult > {
268
- dbg ! ( & self . state) ;
269
-
270
226
match self . state {
271
227
State :: Init => {
272
228
// Initial read
@@ -283,12 +239,10 @@ impl<R: Read + Unpin> ChunkedDecoder<R> {
283
239
}
284
240
State :: TrailerDone ( ref mut headers) => {
285
241
let headers = std:: mem:: replace ( headers, Vec :: new ( ) ) ;
286
- dbg ! ( "headers send" ) ;
287
242
let mut fut = Box :: pin ( self . trailer_sender . send ( headers) ) ;
288
243
match Pin :: new ( & mut fut) . poll ( cx) {
289
244
Poll :: Ready ( _) => { }
290
245
Poll :: Pending => {
291
- dbg ! ( "pending send" ) ;
292
246
return Ok ( DecodeResult :: Some {
293
247
read : 0 ,
294
248
new_state : self . state . clone ( ) ,
@@ -325,7 +279,6 @@ impl<R: Read + Unpin> Read for ChunkedDecoder<R> {
325
279
cx : & mut Context < ' _ > ,
326
280
buf : & mut [ u8 ] ,
327
281
) -> Poll < io:: Result < usize > > {
328
- dbg ! ( "poll_read" ) ;
329
282
let this = & mut * self ;
330
283
331
284
let mut n = std:: mem:: replace ( & mut this. current , Position :: default ( ) ) ;
@@ -336,7 +289,6 @@ impl<R: Read + Unpin> Read for ChunkedDecoder<R> {
336
289
true
337
290
} ;
338
291
339
- dbg ! ( n) ;
340
292
let mut buffer = if n. len ( ) > 0 && this. initial_decode {
341
293
match this. poll_read_inner ( cx, buffer, & n, buf) ? {
342
294
DecodeResult :: Some {
@@ -372,10 +324,8 @@ impl<R: Read + Unpin> Read for ChunkedDecoder<R> {
372
324
} ;
373
325
374
326
loop {
375
- dbg ! ( "loop" ) ;
376
327
if n. len ( ) >= buffer. capacity ( ) {
377
328
if buffer. capacity ( ) + 1024 <= MAX_CAPACITY {
378
- dbg ! ( "resizing buffer" ) ;
379
329
buffer. realloc ( buffer. capacity ( ) + 1024 ) ;
380
330
} else {
381
331
std:: mem:: replace ( & mut this. buffer , buffer) ;
@@ -388,7 +338,6 @@ impl<R: Read + Unpin> Read for ChunkedDecoder<R> {
388
338
}
389
339
390
340
if needs_read {
391
- dbg ! ( "reading" ) ;
392
341
let bytes_read = match Pin :: new ( & mut this. inner ) . poll_read ( cx, & mut buffer[ n. end ..] )
393
342
{
394
343
Poll :: Ready ( result) => result?,
@@ -402,7 +351,6 @@ impl<R: Read + Unpin> Read for ChunkedDecoder<R> {
402
351
return Poll :: Pending ;
403
352
}
404
353
} ;
405
- dbg ! ( bytes_read) ;
406
354
n. end += bytes_read;
407
355
}
408
356
match this. poll_read_inner ( cx, buffer, & n, buf) ? {
@@ -413,7 +361,6 @@ impl<R: Read + Unpin> Read for ChunkedDecoder<R> {
413
361
new_state,
414
362
pending,
415
363
} => {
416
- dbg ! ( "some" ) ;
417
364
// current buffer might now contain more data inside, so we need to attempt
418
365
// to decode it next time
419
366
this. initial_decode = true ;
@@ -436,8 +383,6 @@ impl<R: Read + Unpin> Read for ChunkedDecoder<R> {
436
383
continue ;
437
384
}
438
385
DecodeResult :: None ( buf) => {
439
- dbg ! ( "none" ) ;
440
-
441
386
buffer = buf;
442
387
443
388
if this. buffer . is_empty ( ) || n. is_zero ( ) {
0 commit comments