File tree 1 file changed +12
-2
lines changed
1 file changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -196,8 +196,9 @@ where I: AsyncRead + AsyncWrite,
196
196
}
197
197
198
198
} ,
199
- Reading :: Init | Reading :: KeepAlive | Reading :: Closed => unreachable ! ( )
199
+ _ => unreachable ! ( "read_body invalid state: {:?}" , self . state . reading ) ,
200
200
} ;
201
+
201
202
self . state . reading = reading;
202
203
ret
203
204
}
@@ -324,6 +325,14 @@ where I: AsyncRead + AsyncWrite,
324
325
325
326
if self . has_queued_body ( ) {
326
327
try!( self . flush ( ) ) ;
328
+
329
+ if !self . can_write_body ( ) {
330
+ if chunk. as_ref ( ) . map ( |c| c. as_ref ( ) . len ( ) ) . unwrap_or ( 0 ) == 0 {
331
+ return Ok ( AsyncSink :: NotReady ( chunk) ) ;
332
+ } else {
333
+ return Ok ( AsyncSink :: Ready ) ;
334
+ }
335
+ }
327
336
}
328
337
329
338
let state = match self . state . writing {
@@ -369,8 +378,9 @@ where I: AsyncRead + AsyncWrite,
369
378
}
370
379
}
371
380
} ,
372
- _ => unreachable ! ( ) ,
381
+ _ => unreachable ! ( "write_body invalid state: {:?}" , self . state . writing ) ,
373
382
} ;
383
+
374
384
self . state . writing = state;
375
385
Ok ( AsyncSink :: Ready )
376
386
}
You can’t perform that action at this time.
0 commit comments