Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sockets: add TCPProxyFromEnvironment to keep pre-go1.16 behavior #85

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Jul 28, 2021

  1. sockets: add TCPProxyFromEnvironment to keep pre-go1.16 behavior

    TCPProxyFromEnvironment wraps http.ProxyFromEnvironment, to preserve the
    pre-go1.16 behavior for URLs using the 'tcp://' scheme. For other schemes,
    golang's standard behavior is preserved (and depends on the Go version used).
    
    Prior to go1.16, `https://` schemes would use HTTPS_PROXY, and any other
    scheme would use HTTP_PROXY. However, golang/net@7b1cca2
    (per a request in golang/go#40909) changed this behavior to only use
    HTTP_PROXY for `http://` schemes, no longer using a proxy for any other
    scheme.
    
    Docker uses the `tcp://` scheme as a default for API connections, to indicate
    that the API is not "purely" HTTP. Various parts in the code also *require*
    
    this scheme to be used. While we could change the default and allow http(s)
    schemes to be used, doing so will take time, taking into account that there
    are many installs in existence that have tcp:// configured as DOCKER_HOST.
    
    This function detects if the `tcp://` scheme is used; if it is, it creates
    a shallow copy of req, containing just the URL, and overrides the scheme with
    'http', which should be sufficient to perform proxy detection.
    For other (non-'tcp://') schemes, http.ProxyFromEnvironment is called without
    altering the request.
    
    Signed-off-by: Sebastiaan van Stijn <[email protected]>
    thaJeztah committed Jul 28, 2021
    Configuration menu
    Copy the full SHA
    6850769 View commit details
    Browse the repository at this point in the history