1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-11-28 01:32:57 +01:00

Fix BorrowMutError panic in client connector #793

This commit is contained in:
Nikolay Kim 2019-04-23 09:42:19 -07:00
parent 3532602299
commit 5d531989e7
2 changed files with 21 additions and 14 deletions

View File

@ -1,5 +1,12 @@
# Changes # Changes
## [0.1.2] - 2019-04-23
### Fixed
* Fix BorrowMutError panic in client connector #793
## [0.1.1] - 2019-04-19 ## [0.1.1] - 2019-04-19
### Changes ### Changes

View File

@ -113,13 +113,23 @@ where
match self.1.as_ref().borrow_mut().acquire(&key) { match self.1.as_ref().borrow_mut().acquire(&key) {
Acquire::Acquired(io, created) => { Acquire::Acquired(io, created) => {
// use existing connection // use existing connection
Either::A(ok(IoConnection::new( return Either::A(ok(IoConnection::new(
io, io,
created, created,
Some(Acquired(key, Some(self.1.clone()))), Some(Acquired(key, Some(self.1.clone()))),
))) )));
} }
Acquire::NotAvailable => { Acquire::Available => {
// open new connection
return Either::B(Either::B(OpenConnection::new(
key,
self.1.clone(),
self.0.call(req),
)));
}
_ => (),
}
// connection is not available, wait // connection is not available, wait
let (rx, token) = self.1.as_ref().borrow_mut().wait_for(req); let (rx, token) = self.1.as_ref().borrow_mut().wait_for(req);
Either::B(Either::A(WaitForConnection { Either::B(Either::A(WaitForConnection {
@ -129,16 +139,6 @@ where
inner: Some(self.1.clone()), inner: Some(self.1.clone()),
})) }))
} }
Acquire::Available => {
// open new connection
Either::B(Either::B(OpenConnection::new(
key,
self.1.clone(),
self.0.call(req),
)))
}
}
}
} }
#[doc(hidden)] #[doc(hidden)]