Skip to content

0.7.0

Latest

Choose a tag to compare

@amigin amigin released this 13 Oct 08:06
Name the server behind an SSH tunnel in :authority, not unix.socket

A channel through an ssh tunnel is opened to a local unix socket, built from
http://unix.socket/<path>, so every request named unix.socket in h2's
:authority. For ssh://...->http://name@10.0.0.7:8080 the tunnel went to the
pinned ip but the server name was lost, and a reverse proxy on that ip had
nothing to route the call by.

The ssh branch now sets the endpoint's origin to the host of the url behind
the tunnel, so :authority is name:8080 - the same as without the tunnel. It
applies to every ssh tunnel, pinned ip or not; a plain local unix socket
still names unix.socket. The scheme stays http: that is what goes through
the tunnel.

Tests: a unix-socket channel over a real h2 connection names unix.socket
without an origin and the server name with one; the origin computed for ssh
urls (with-ssh). The ssh branch itself was not run against a real tunnel.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>