Skip to content

Commit 4eb2f25

Browse files
authored
Merge pull request #38 from ryanfowler/fix-pool-close-blocking-leak
Fix Pool::close_blocking leaking connections on error
2 parents 5c00370 + d13b68f commit 4eb2f25

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

src/pool.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,18 @@ impl Pool {
235235
/// After this method returns, all calls to `self::conn_blocking()` or
236236
/// `self::conn_mut_blocking()` will return an [`Error::Closed`] error.
237237
pub fn close_blocking(&self) -> Result<(), Error> {
238-
self.state
239-
.clients
240-
.iter()
241-
.try_for_each(|client| client.close_blocking())
238+
let mut first_err = None;
239+
for client in self.state.clients.iter() {
240+
if let Err(e) = client.close_blocking() {
241+
if first_err.is_none() {
242+
first_err = Some(e);
243+
}
244+
}
245+
}
246+
match first_err {
247+
Some(e) => Err(e),
248+
None => Ok(()),
249+
}
242250
}
243251

244252
fn get(&self) -> &Client {

0 commit comments

Comments
 (0)