Commit graph

7 commits

Author SHA1 Message Date
rinpatch
129a2f48df ConnectionPool middleware: handle connection opening errors 2020-09-05 21:36:17 +03:00
rinpatch
9d6aca5bee ConnectionPool: fix the previous hotfix
I rushed the hotfix and forgot how `pop_in` actually works,
I want to die. We need some integration tests for the HTTP client
2020-09-05 21:27:06 +03:00
rinpatch
5298de3be6 ConnectionPool middleware: fix a crash due to unimplemented behaviour
Structs don't implement Access behaviour, so this crashed. Tests didn't
catch it and I didn't test that part of the codepath. Very sorry
2020-09-05 21:17:03 +03:00
rinpatch
10da13c713 ConnectionPool middleware: Fix connection leak on ReverseProxy redirects
Requires a patched Tesla due to upstream not saving opts between
redirects, patch submitted at https://github.com/teamon/tesla/pull/414
2020-09-04 22:10:40 +03:00
rinpatch
d34fe2840d HTTP: radically simplify pool checkin/checkout
Use a custom tesla middleware instead of adapter helper function +
custom redirect middleware.

This will also fix "Client died before releasing the connection"
messages when the request pool is overloaded. Since the checkout is
now done after passing ConcurrentLimiter.

This is technically less efficient, since the connection needs to be
checked in/out every time the middleware is left or entered respectively.
But I don't think the nanoseconds we might lose on redirects
to the same host are worth the complexity.
2020-09-03 23:44:13 +03:00
rinpatch
12fa5541f0 FollowRedirects: Unconditionally release the connection if there is an error
There is no need for streaming the body if there is no body
2020-07-15 15:26:35 +03:00
rinpatch
94c8f3cfaf Use a custom pool-aware FollowRedirects middleware 2020-07-15 15:26:35 +03:00