Skip to content

v0.4.0

Compare
Choose a tag to compare
@achetronic achetronic released this 20 Aug 13:11
· 48 commits to master since this release

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 to io.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