<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tailscale/control/controlhttp, branch knyar/netmapdiff2</title>
<subtitle>The easiest, most secure way to use WireGuard and 2FA</subtitle>
<id>http://git.waynecole.info/tailscale/atom?h=knyar%2Fnetmapdiff2</id>
<link rel='self' href='http://git.waynecole.info/tailscale/atom?h=knyar%2Fnetmapdiff2'/>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/'/>
<updated>2025-06-18T21:20:39Z</updated>
<entry>
<title>net/tlsdial: fix TLS cert validation of HTTPS proxies</title>
<updated>2025-06-18T21:20:39Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2025-06-09T01:51:41Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=e92eb6b17bb59cd66cd78c90db3b285015ed5e11'/>
<id>urn:sha1:e92eb6b17bb59cd66cd78c90db3b285015ed5e11</id>
<content type='text'>
If you had HTTPS_PROXY=https://some-valid-cert.example.com running a
CONNECT proxy, we should've been able to do a TLS CONNECT request to
e.g. controlplane.tailscale.com:443 through that, and I'm pretty sure
it used to work, but refactorings and lack of integration tests made
it regress.

It probably regressed when we added the baked-in LetsEncrypt root cert
validation fallback code, which was testing against the wrong hostname
(the ultimate one, not the one which we were being asked to validate)

Fixes #16222

Change-Id: If014e395f830e2f87f056f588edacad5c15e91bc
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
</content>
</entry>
<entry>
<title>derp/derphttp: remove ban on websockets dependency</title>
<updated>2025-04-16T17:10:45Z</updated>
<author>
<name>David Anderson</name>
<email>dave@tailscale.com</email>
</author>
<published>2025-03-20T16:19:47Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=6d6f69e7358f52b56ad8365f465aefaa95a7de0c'/>
<id>urn:sha1:6d6f69e7358f52b56ad8365f465aefaa95a7de0c</id>
<content type='text'>
The event bus's debug page uses websockets.

Updates #15160

Signed-off-by: David Anderson &lt;dave@tailscale.com&gt;
</content>
</entry>
<entry>
<title>net/{netx,memnet},all: add netx.DialFunc, move memnet Network impl</title>
<updated>2025-04-08T17:07:47Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2025-04-08T15:32:27Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=fb96137d79628db5493603ac2fc67d2a92f6bc01'/>
<id>urn:sha1:fb96137d79628db5493603ac2fc67d2a92f6bc01</id>
<content type='text'>
This adds netx.DialFunc, unifying a type we have a bazillion other
places, giving it now a nice short name that's clickable in
editors, etc.

That highlighted that my earlier move (03b47a55c7956) of stuff from
nettest into netx moved too much: it also dragged along the memnet
impl, meaning all users of netx.DialFunc who just wanted netx for the
type definition were instead also pulling in all of memnet.

So move the memnet implementation netx.Network into memnet, a package
we already had.

Then use netx.DialFunc in a bunch of places. I'm sure I missed some.
And plenty remain in other repos, to be updated later.

Updates tailscale/corp#27636

Change-Id: I7296cd4591218e8624e214f8c70dab05fb884e95
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
</content>
</entry>
<entry>
<title>control/controlhttp: reduce some log spam on context cancel</title>
<updated>2025-04-02T14:36:04Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2025-03-31T04:12:29Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=29c2bb1db6bc7f5d964a76ba48fde570b79abd4d'/>
<id>urn:sha1:29c2bb1db6bc7f5d964a76ba48fde570b79abd4d</id>
<content type='text'>
Change-Id: I3ac00ddb29c16e9791ab2be19f454dabd721e4c3
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
</content>
</entry>
<entry>
<title>control/controlhttp: set forceNoise443 on Plan 9</title>
<updated>2025-04-02T14:36:04Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2025-04-01T11:01:00Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=4c9b37fa2e629eb740cecd5cb699410e1deb3b91'/>
<id>urn:sha1:4c9b37fa2e629eb740cecd5cb699410e1deb3b91</id>
<content type='text'>
Updates #5794

Change-Id: Idc67082f5d367e03540e1a5310db5b466ee03666
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
</content>
</entry>
<entry>
<title>control/controlhttp: quiet "forcing port 443" log spam</title>
<updated>2025-03-25T21:26:24Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2025-03-25T20:32:55Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=5aa1c27aad94f1408c2092365c32a4a918c305e0'/>
<id>urn:sha1:5aa1c27aad94f1408c2092365c32a4a918c305e0</id>
<content type='text'>
Minimal mitigation that doesn't do the full refactor that's probably
warranted.

Updates #15402

Change-Id: I79fd91de0e0661d25398f7d95563982ed1d11561
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
</content>
</entry>
<entry>
<title>control/controlhttp: set *health.Tracker in tests</title>
<updated>2024-11-26T23:05:05Z</updated>
<author>
<name>Andrew Dunham</name>
<email>andrew@du.nham.ca</email>
</author>
<published>2024-11-26T22:50:29Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=e87b71ec3c7bded3fadf44cb9374df5de5e213d6'/>
<id>urn:sha1:e87b71ec3c7bded3fadf44cb9374df5de5e213d6</id>
<content type='text'>
Observed during another PR:
    https://github.com/tailscale/tailscale/actions/runs/12040045880/job/33569141807

Updates #cleanup

Signed-off-by: Andrew Dunham &lt;andrew@du.nham.ca&gt;
Change-Id: I9e0f49a35485fa2e097892737e5e3c95bf775a90
</content>
</entry>
<entry>
<title>cmd/tailscale/cli: create netmon in debug ts2021</title>
<updated>2024-11-21T03:37:26Z</updated>
<author>
<name>Andrew Dunham</name>
<email>andrew@du.nham.ca</email>
</author>
<published>2024-11-20T22:48:06Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=af4c3a4a1baba868996bc9ed022d67ebe0320873'/>
<id>urn:sha1:af4c3a4a1baba868996bc9ed022d67ebe0320873</id>
<content type='text'>
Otherwise we'll see a panic if we hit the dnsfallback code and try to
call NewDialer with a nil NetMon.

Updates #14161

Signed-off-by: Andrew Dunham &lt;andrew@du.nham.ca&gt;
Change-Id: I81c6e72376599b341cb58c37134c2a948b97cf5f
</content>
</entry>
<entry>
<title>derp/derphttp: don't link websockets other than on GOOS=js</title>
<updated>2024-11-08T06:29:41Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2024-11-08T00:49:47Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=020cacbe702463f14a5d2d5427819c491c7e6578'/>
<id>urn:sha1:020cacbe702463f14a5d2d5427819c491c7e6578</id>
<content type='text'>
Or unless the new "ts_debug_websockets" build tag is set.

Updates #1278

Change-Id: Ic4c4f81c1924250efd025b055585faec37a5491d
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
</content>
</entry>
<entry>
<title>control/controlhttp/controlhttpserver: split out Accept to its own package</title>
<updated>2024-11-08T06:29:41Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2024-11-07T23:59:19Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/tailscale/commit/?id=c3306bfd15e761e0ad38e3e3970becd0d301e4c7'/>
<id>urn:sha1:c3306bfd15e761e0ad38e3e3970becd0d301e4c7</id>
<content type='text'>
Otherwise all the clients only using control/controlhttp for the
ts2021 HTTP client were also pulling in WebSocket libraries, as the
server side always needs to speak websockets, but only GOOS=js clients
speak it.

This doesn't yet totally remove the websocket dependency on Linux because
Linux has a envknob opt-in to act like GOOS=js for manual testing and force
the use of WebSockets for DERP only (not control). We can put that behind
a build tag in a future change to eliminate the dep on all GOOSes.

Updates #1278

Change-Id: I4f60508f4cad52bf8c8943c8851ecee506b7ebc9
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
</content>
</entry>
</feed>
