Skip to content

Commit

Permalink
implement CloseBackend in sessions
Browse files Browse the repository at this point in the history
  • Loading branch information
Geal authored and FlorentinDUBOIS committed Jul 13, 2022
1 parent 4ef0c60 commit 77e36b8
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 12 deletions.
15 changes: 15 additions & 0 deletions lib/src/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -985,6 +985,21 @@ impl ProxySession for Session {

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}
} else if let SessionResult::CloseBackend(_opt_back_token) = res {
if let (Some(token), Some(fd)) = (
self.back_token(),
self.back_socket_mut().map(|s| s.as_raw_fd()),
) {
let proxy = self.proxy.borrow_mut();
if let Err(e) = proxy.registry.deregister(&mut SourceFd(&fd)) {
error!("error deregistering socket({:?}): {:?}", fd, e);
}

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}

//FIXME: should we really pass a token here?
self.close_backend_inner(Token(0));
}
self.metrics().service_stop();
res
Expand Down
15 changes: 15 additions & 0 deletions lib/src/https_openssl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1129,6 +1129,21 @@ impl ProxySession for Session {

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}
} else if let SessionResult::CloseBackend(_opt_back_token) = res {
if let (Some(token), Some(fd)) = (
self.back_token(),
self.back_socket_mut().map(|s| s.as_raw_fd()),
) {
let proxy = self.proxy.borrow_mut();
if let Err(e) = proxy.registry.deregister(&mut SourceFd(&fd)) {
error!("error deregistering socket({:?}): {:?}", fd, e);
}

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}

//FIXME: should we really pass a token here?
self.close_backend_inner(Token(0));
}

self.metrics().service_stop();
Expand Down
15 changes: 15 additions & 0 deletions lib/src/https_rustls/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1038,6 +1038,21 @@ impl ProxySession for Session {

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}
} else if let SessionResult::CloseBackend(_opt_back_token) = res {
if let (Some(token), Some(fd)) = (
self.back_token(),
self.back_socket_mut().map(|s| s.as_raw_fd()),
) {
let proxy = self.proxy.borrow_mut();
if let Err(e) = proxy.registry.deregister(&mut SourceFd(&fd)) {
error!("error deregistering socket({:?}): {:?}", fd, e);
}

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}

//FIXME: should we really pass a token here?
self.close_backend_inner(Token(0));
}

self.metrics().service_stop();
Expand Down
13 changes: 1 addition & 12 deletions lib/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1688,18 +1688,7 @@ impl Server {
//trace!("INTERPRET ORDER: {:?}", order);
match order {
SessionResult::CloseSession => {}
SessionResult::CloseBackend(opt) => {
if let Some(token) = opt {
let cl = self.to_session(token);
let mut sessions = self.sessions.borrow_mut();
if sessions.slab.contains(cl.0) {
let session = sessions.slab.remove(cl.0);
session
.borrow_mut()
.close_backend(token, self.poll.registry());
}
}
}
SessionResult::CloseBackend(_opt) => {}
SessionResult::ReconnectBackend(main_token, backend_token) => {
if let Some(t) = backend_token {
let cl = self.to_session(t);
Expand Down
15 changes: 15 additions & 0 deletions lib/src/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -946,6 +946,21 @@ impl ProxySession for Session {

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}
} else if let SessionResult::CloseBackend(_opt_back_token) = res {
if let (Some(token), Some(fd)) = (
self.back_token(),
self.back_socket_mut().map(|s| s.as_raw_fd()),
) {
let proxy = self.proxy.borrow_mut();
if let Err(e) = proxy.registry.deregister(&mut SourceFd(&fd)) {
error!("error deregistering socket({:?}): {:?}", fd, e);
}

proxy.sessions.borrow_mut().slab.try_remove(token.0);
}

//FIXME: should we really pass a token here?
self.close_backend_inner(Token(0));
}

self.metrics().service_stop();
Expand Down

0 comments on commit 77e36b8

Please sign in to comment.