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 {
257
257
_ => {
258
258
let mut changed = false ;
259
259
if !self . send_buffer . is_empty ( ) && !self . client_readiness . is_writable ( ) {
260
- self . client_readiness . add ( Interest :: WRITABLE ) ;
260
+ self . client_readiness |= Interest :: WRITABLE ;
261
261
changed = true ;
262
262
}
263
263
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 ) ;
265
268
changed = true ;
266
269
}
267
270
if self . server_conn . writable ( ) && !self . client_readiness . is_readable ( ) {
268
- self . client_readiness . add ( Interest :: READABLE ) ;
271
+ self . client_readiness |= Interest :: READABLE ;
269
272
changed = true ;
270
273
}
271
274
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 ) ;
273
279
changed = true ;
274
280
}
275
281
Original file line number Diff line number Diff line change @@ -103,22 +103,28 @@ impl Backend for TcpBackend {
103
103
_ => {
104
104
let mut changed = false ;
105
105
if !self . send_buffer . is_empty ( ) && !self . readiness . is_writable ( ) {
106
- self . readiness . add ( Interest :: WRITABLE ) ;
106
+ self . readiness |= Interest :: WRITABLE ;
107
107
changed = true ;
108
108
log:: debug!( "connection:{} add writable to tcp target" , self . index) ;
109
109
}
110
110
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 ) ;
112
115
changed = true ;
113
116
log:: debug!( "connection:{} remove writable from tcp target" , self . index) ;
114
117
}
115
118
if readable && !self . readiness . is_readable ( ) {
116
- self . readiness . add ( Interest :: READABLE ) ;
119
+ self . readiness |= Interest :: READABLE ;
117
120
log:: debug!( "connection:{} add readable to tcp target" , self . index) ;
118
121
changed = true ;
119
122
}
120
123
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 ) ;
122
128
log:: debug!( "connection:{} remove readable from tcp target" , self . index) ;
123
129
changed = true ;
124
130
}
Original file line number Diff line number Diff line change @@ -191,22 +191,28 @@ impl Backend for UdpBackend {
191
191
_ => {
192
192
let mut changed = false ;
193
193
if !self . send_buffer . is_empty ( ) && !self . readiness . is_writable ( ) {
194
- self . readiness . add ( Interest :: WRITABLE ) ;
194
+ self . readiness |= Interest :: WRITABLE ;
195
195
changed = true ;
196
196
log:: debug!( "connection:{} add writable to udp target" , self . index) ;
197
197
}
198
198
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 ) ;
200
203
changed = true ;
201
204
log:: debug!( "connection:{} remove writable from udp target" , self . index) ;
202
205
}
203
206
if readable && !self . readiness . is_readable ( ) {
204
- self . readiness . add ( Interest :: READABLE ) ;
207
+ self . readiness |= Interest :: READABLE ;
205
208
log:: debug!( "connection:{} add readable to udp target" , self . index) ;
206
209
changed = true ;
207
210
}
208
211
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 ) ;
210
216
log:: debug!( "connection:{} remove readable to udp target" , self . index) ;
211
217
changed = true ;
212
218
}
Original file line number Diff line number Diff line change @@ -190,20 +190,26 @@ impl<T: Session> TlsConn<T> {
190
190
_ => {
191
191
let mut changed = false ;
192
192
if self . session . wants_write ( ) && !self . readiness . is_writable ( ) {
193
- self . readiness . add ( Interest :: WRITABLE ) ;
193
+ self . readiness |= Interest :: WRITABLE ;
194
194
changed = true ;
195
195
}
196
196
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 ) ;
198
201
changed = true ;
199
202
}
200
203
if readable && !self . readiness . is_readable ( ) {
201
- self . readiness . add ( Interest :: READABLE ) ;
204
+ self . readiness |= Interest :: READABLE ;
202
205
changed = true ;
203
206
}
204
207
205
208
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 ) ;
207
213
changed = true ;
208
214
}
209
215
if changed {
You can’t perform that action at this time.
0 commit comments