control/controlhttp: use ws:// when HTTPSPort is NoPort in JS dialer
When HTTPS is explicitly disabled (HTTPSPort == NoPort), the JS WebSocket dialer should use ws:// instead of wss://. This matches the behavior of the non-JS client and fixes connections to development control servers e.g. http://localhost:31544. Updates tailscale/corp#40944 Signed-off-by: Adriano Sela Aviles <adriano@tailscale.com>
This commit is contained in:
committed by
Adriano Sela Aviles
parent
d06cc56987
commit
daddb14b8f
@@ -32,7 +32,9 @@ func (d *Dialer) Dial(ctx context.Context) (*ClientConn, error) {
|
|||||||
host := d.Hostname
|
host := d.Hostname
|
||||||
// If using a custom control server (on a non-standard port), prefer that.
|
// If using a custom control server (on a non-standard port), prefer that.
|
||||||
// This mirrors the port selection in newNoiseClient from noise.go.
|
// This mirrors the port selection in newNoiseClient from noise.go.
|
||||||
if d.HTTPPort != "" && d.HTTPPort != "80" && d.HTTPSPort == "443" {
|
// Also use ws:// when HTTPS is explicitly disabled (NoPort), which happens
|
||||||
|
// for http:// URLs with private hostnames (e.g. http://localhost:31544).
|
||||||
|
if d.HTTPPort != "" && d.HTTPPort != "80" && (d.HTTPSPort == "443" || d.HTTPSPort == NoPort) {
|
||||||
wsScheme = "ws"
|
wsScheme = "ws"
|
||||||
host = net.JoinHostPort(host, d.HTTPPort)
|
host = net.JoinHostPort(host, d.HTTPPort)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user