Skip to content

Commit 983abec

Browse files
authored
Fix interrupt handling. Fix double server pause/resume (#353)
1 parent e4d4ae2 commit 983abec

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

actix-server/src/accept.rs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ impl Accept {
223223
loop {
224224
if let Err(e) = self.poll.poll(&mut events, None) {
225225
match e.kind() {
226-
io::ErrorKind::Interrupted => continue,
226+
io::ErrorKind::Interrupted => {}
227227
_ => panic!("Poll error: {}", e),
228228
}
229229
}
@@ -286,23 +286,29 @@ impl Accept {
286286
Some(WakerInterest::Pause) => {
287287
drop(guard);
288288

289-
self.paused = true;
289+
if !self.paused {
290+
self.paused = true;
290291

291-
self.deregister_all(sockets);
292+
self.deregister_all(sockets);
293+
}
292294
}
293295
Some(WakerInterest::Resume) => {
294296
drop(guard);
295297

296-
self.paused = false;
298+
if self.paused {
299+
self.paused = false;
297300

298-
sockets.iter_mut().for_each(|info| {
299-
self.register_logged(info);
300-
});
301+
sockets.iter_mut().for_each(|info| {
302+
self.register_logged(info);
303+
});
301304

302-
self.accept_all(sockets);
305+
self.accept_all(sockets);
306+
}
303307
}
304308
Some(WakerInterest::Stop) => {
305-
self.deregister_all(sockets);
309+
if !self.paused {
310+
self.deregister_all(sockets);
311+
}
306312

307313
return true;
308314
}

0 commit comments

Comments
 (0)