@@ -40,30 +40,34 @@ impl<S, I> Stream for SuspendableStream<S>
40
40
type Error = ( ) ;
41
41
42
42
fn poll ( & mut self ) -> Result < Async < Option < Self :: Item > > , ( ) > {
43
- if let Some ( mut timeout) = self . timeout . take ( ) {
44
- match timeout. poll ( ) {
45
- Ok ( Async :: Ready ( _) ) => { }
46
- Ok ( Async :: NotReady ) => {
47
- self . timeout = Some ( timeout) ;
48
- return Ok ( Async :: NotReady ) ;
43
+ loop {
44
+ if let Some ( mut timeout) = self . timeout . take ( ) {
45
+ match timeout. poll ( ) {
46
+ Ok ( Async :: Ready ( _) ) => { }
47
+ Ok ( Async :: NotReady ) => {
48
+ self . timeout = Some ( timeout) ;
49
+ return Ok ( Async :: NotReady ) ;
50
+ }
51
+ Err ( err) => {
52
+ warn ! ( "Timeout error {:?}" , err) ;
53
+ task:: current ( ) . notify ( ) ;
54
+ return Ok ( Async :: NotReady ) ;
55
+ }
49
56
}
50
- Err ( _) => unreachable ! ( "Polling a delay shouldn't yield any errors; qed" )
51
57
}
52
- }
53
58
54
- loop {
55
59
match self . stream . poll ( ) {
56
60
Ok ( item) => {
57
61
if self . next_delay > self . initial_delay {
58
62
self . next_delay = self . initial_delay ;
59
63
}
60
64
return Ok ( item)
61
- } ,
62
- Err ( ref e) => if connection_error ( e) {
63
- warn ! ( "Connection Error: {:?}" , e) ;
64
- continue
65
65
}
66
- Err ( err) => {
66
+ Err ( ref err) => {
67
+ if connection_error ( err) {
68
+ warn ! ( "Connection Error: {:?}" , err) ;
69
+ continue
70
+ }
67
71
self . next_delay = if self . next_delay < self . max_delay {
68
72
self . next_delay * 2
69
73
} else {
0 commit comments