libtailscale: make tailscale_listener pollable

Use a socketpair(2) and sendmsg/recvmsg to pass a connection fd
from Go to C. This lets people write non-blocking C by polling on a
tailscale_listener for when they should tailscale_accept.

Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
This commit is contained in:
David Crawshaw
2023-03-12 14:09:31 -07:00
committed by David Crawshaw
parent 42597d5fb7
commit b0e2f4a4e4
8 changed files with 170 additions and 110 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ int main(void) {
}
close(conn);
}
tailscale_listener_close(ln);
close(ln);
tailscale_close(ts);
return 0;