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

Make DNS lookups async in Go's net package #3588

Open
bradfitz opened this issue Dec 16, 2021 · 4 comments
Open

Make DNS lookups async in Go's net package #3588

bradfitz opened this issue Dec 16, 2021 · 4 comments
Assignees

Comments

@bradfitz
Copy link
Member

Go's net package on Windows currently consumes a thread while doing DNS lookups, which means Tailscale's ExitDNS service (the DNS server that runs when you're running an exit node) consumes one thread per outstanding DNS lookup.

@dblohm7 wrote a proof-of-concept of using DnsQueryEx to do them async. It requires Windows 8, but we should be able to move that code to Go's net package so everybody benefits, without changing the Go net Lookup APIs.

@DentonGentry
Copy link
Contributor

It requires Windows 8

The day is coming where Windows 7 support will not be possible. golang/go#52188

@bradfitz
Copy link
Member Author

@dblohm7 still got that code around somewhere? I forgot its branch name.

@cristaloleg
Copy link

Hi @dblohm7 is this change available somewhere?

@DentonGentry
Copy link
Contributor

@dblohm7 wrote a proof-of-concept of using DnsQueryEx to do them async. It requires Windows 8, but we should be able to move that code to Go's net package so everybody benefits, without changing the Go net Lookup APIs.

Tailscale 1.42 is the last release which will support Windows 7 & 8. https://github.com/tailscale/tailscale/releases/tag/v1.42.0

Future releases will target Windows 10 and later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants