Allow hackney 4.x - #3
Conversation
excontainers only reaches hackney through Tesla.Adapter.Hackney and makes no direct :hackney calls, so it can follow Tesla's supported range. Pinning to ~> 1.16 was holding consumers on hackney 1.x, which carries four unpatched advisories (GHSA-gp9c-pm5m-5cxr high, GHSA-j9wq-vxxc-94wf, GHSA-mp55-p8c9-rfw2, GHSA-pj7v-xfvx-wmjq), all first patched in 4.0.1.
|
Required label not found on this PR. |
|
Heads-up: relaxing the constraint is correct in principle, but hackney 4.x cannot actually be used by excontainers yet — 4.7.2 broke unix-domain-socket connections, which is exactly how we reach the Docker daemon.
In qdentity/mindfields-phx this makes So this widened requirement lets the solver pick a hackney that does not work here. Worth either reverting until upstream restores unix-socket support, or keeping it with a comment that 4.x is currently unusable for the Docker transport. |
#3 widened this to allow hackney 4.x on the reasoning that we only reach hackney through Tesla.Adapter.Hackney and make no direct :hackney calls. That missed that we reach the Docker daemon over a unix domain socket, which hackney 4.x can no longer connect to. The URL still parses correctly in 4.7.2 (transport hackney_local_tcp, host /var/run/docker.sock, port 0) and hackney_local_tcp.erl is byte-identical to 1.25.0, but 4.x's rewritten connection layer routes through hackney_happy (happy-eyeballs DNS) and never dispatches the local_tcp transport: :hackney.request(:get, "http+unix://%2Fvar%2Frun%2Fdocker.sock/v1.41/version", [], "", []) 1.25.0 => {:error, :enoent} (tried the socket) 4.7.2 => {:error, :nxdomain} (tried DNS) Downstream this made Excontainers.Container.init/1 fail and took out every test using a container (qdentity/mindfields-phx#4587 was dequeued over it). Restores the cap and documents why, so it isn't widened again.
excontainers only reaches hackney through
Tesla.Adapter.Hackneyand makes no direct:hackney.*calls, so it can follow Tesla's own supported range instead of pinning~> 1.16.That pin was the last thing holding
qdentity/mindfields-phxon hackney 1.25.0, which carries four advisories — all first patched in 4.0.1:ssl:connect/2post-handshake upgrade has no timeoutdomain/pathThe new requirement mirrors Tesla's: hackney 2.x, 3.x, 4.0.0 and 4.0.1 are excluded because they lack exports Tesla relies on.
Follows the same pattern as #1 (relax tesla) and #2 (allow gestalt 2.x).