File tree Expand file tree Collapse file tree 4 files changed +40
-16
lines changed
Expand file tree Collapse file tree 4 files changed +40
-16
lines changed Original file line number Diff line number Diff line change @@ -257,19 +257,25 @@ impl Connection {
257257 _ => {
258258 let mut changed = false ;
259259 if !self . send_buffer . is_empty ( ) && !self . client_readiness . is_writable ( ) {
260- self . client_readiness . add ( Interest :: WRITABLE ) ;
260+ self . client_readiness |= Interest :: WRITABLE ;
261261 changed = true ;
262262 }
263263 if self . send_buffer . is_empty ( ) && self . client_readiness . is_writable ( ) {
264- self . client_readiness . remove ( Interest :: WRITABLE ) ;
264+ self . client_readiness = self
265+ . client_readiness
266+ . remove ( Interest :: WRITABLE )
267+ . unwrap_or ( Interest :: READABLE ) ;
265268 changed = true ;
266269 }
267270 if self . server_conn . writable ( ) && !self . client_readiness . is_readable ( ) {
268- self . client_readiness . add ( Interest :: READABLE ) ;
271+ self . client_readiness |= Interest :: READABLE ;
269272 changed = true ;
270273 }
271274 if !self . server_conn . writable ( ) && self . client_readiness . is_readable ( ) {
272- self . client_readiness . remove ( Interest :: READABLE ) ;
275+ self . client_readiness = self
276+ . client_readiness
277+ . remove ( Interest :: READABLE )
278+ . unwrap_or ( Interest :: WRITABLE ) ;
273279 changed = true ;
274280 }
275281
Original file line number Diff line number Diff line change @@ -103,22 +103,28 @@ impl Backend for TcpBackend {
103103 _ => {
104104 let mut changed = false ;
105105 if !self . send_buffer . is_empty ( ) && !self . readiness . is_writable ( ) {
106- self . readiness . add ( Interest :: WRITABLE ) ;
106+ self . readiness |= Interest :: WRITABLE ;
107107 changed = true ;
108108 log:: debug!( "connection:{} add writable to tcp target" , self . index) ;
109109 }
110110 if self . send_buffer . is_empty ( ) && self . readiness . is_writable ( ) {
111- self . readiness . remove ( Interest :: WRITABLE ) ;
111+ self . readiness = self
112+ . readiness
113+ . remove ( Interest :: WRITABLE )
114+ . unwrap_or ( Interest :: READABLE ) ;
112115 changed = true ;
113116 log:: debug!( "connection:{} remove writable from tcp target" , self . index) ;
114117 }
115118 if readable && !self . readiness . is_readable ( ) {
116- self . readiness . add ( Interest :: READABLE ) ;
119+ self . readiness |= Interest :: READABLE ;
117120 log:: debug!( "connection:{} add readable to tcp target" , self . index) ;
118121 changed = true ;
119122 }
120123 if !readable && self . readiness . is_readable ( ) {
121- self . readiness . remove ( Interest :: READABLE ) ;
124+ self . readiness = self
125+ . readiness
126+ . remove ( Interest :: READABLE )
127+ . unwrap_or ( Interest :: WRITABLE ) ;
122128 log:: debug!( "connection:{} remove readable from tcp target" , self . index) ;
123129 changed = true ;
124130 }
Original file line number Diff line number Diff line change @@ -191,22 +191,28 @@ impl Backend for UdpBackend {
191191 _ => {
192192 let mut changed = false ;
193193 if !self . send_buffer . is_empty ( ) && !self . readiness . is_writable ( ) {
194- self . readiness . add ( Interest :: WRITABLE ) ;
194+ self . readiness |= Interest :: WRITABLE ;
195195 changed = true ;
196196 log:: debug!( "connection:{} add writable to udp target" , self . index) ;
197197 }
198198 if self . send_buffer . is_empty ( ) && self . readiness . is_writable ( ) {
199- self . readiness . remove ( Interest :: WRITABLE ) ;
199+ self . readiness = self
200+ . readiness
201+ . remove ( Interest :: WRITABLE )
202+ . unwrap_or ( Interest :: READABLE ) ;
200203 changed = true ;
201204 log:: debug!( "connection:{} remove writable from udp target" , self . index) ;
202205 }
203206 if readable && !self . readiness . is_readable ( ) {
204- self . readiness . add ( Interest :: READABLE ) ;
207+ self . readiness |= Interest :: READABLE ;
205208 log:: debug!( "connection:{} add readable to udp target" , self . index) ;
206209 changed = true ;
207210 }
208211 if !readable && self . readiness . is_readable ( ) {
209- self . readiness . remove ( Interest :: READABLE ) ;
212+ self . readiness = self
213+ . readiness
214+ . remove ( Interest :: READABLE )
215+ . unwrap_or ( Interest :: WRITABLE ) ;
210216 log:: debug!( "connection:{} remove readable to udp target" , self . index) ;
211217 changed = true ;
212218 }
Original file line number Diff line number Diff line change @@ -190,20 +190,26 @@ impl<T: Session> TlsConn<T> {
190190 _ => {
191191 let mut changed = false ;
192192 if self . session . wants_write ( ) && !self . readiness . is_writable ( ) {
193- self . readiness . add ( Interest :: WRITABLE ) ;
193+ self . readiness |= Interest :: WRITABLE ;
194194 changed = true ;
195195 }
196196 if !self . session . wants_write ( ) && self . readiness . is_writable ( ) {
197- self . readiness . remove ( Interest :: WRITABLE ) ;
197+ self . readiness = self
198+ . readiness
199+ . remove ( Interest :: WRITABLE )
200+ . unwrap_or ( Interest :: READABLE ) ;
198201 changed = true ;
199202 }
200203 if readable && !self . readiness . is_readable ( ) {
201- self . readiness . add ( Interest :: READABLE ) ;
204+ self . readiness |= Interest :: READABLE ;
202205 changed = true ;
203206 }
204207
205208 if !readable && self . readiness . is_readable ( ) {
206- self . readiness . remove ( Interest :: READABLE ) ;
209+ self . readiness = self
210+ . readiness
211+ . remove ( Interest :: READABLE )
212+ . unwrap_or ( Interest :: WRITABLE ) ;
207213 changed = true ;
208214 }
209215 if changed {
You can’t perform that action at this time.
0 commit comments