v0.4.0
Changes:
- Refactor HTTP proxy: Due to the proxy is not fully transparent, inspecting headers before connecting to a backend, several things could go wrong in the middle. Due to this, We needed a much more robust way to handle connections, read headers, etc, so the previous approach was not enough.
- Now connection closings are handled carefully for both parts (client <-> proxy and proxy <-> backend).
- Used ports are recycled faster
- Captured HTTP headers in the beginning are re-joined to the rest of the request before being sent to the backend using
io.MultiReader
. This way we can pass that reader directly toio.Copy
and avoid actually compose the request into an intermediate buffer, avoiding bigger performance impacts - Hashring is accessed using Mutual Exclusions to avoid race conditions
Contributors:
@achetronic