// Copyright (c) Tailscale Inc & contributors // SPDX-License-Identifier: BSD-3-Clause package safesocket import ( "context" "fmt" "net" "sync/atomic" "github.com/akutz/memconn" ) const memName = "Tailscale-IPN" // memSeq ensures each IPN instance in the same WASM process gets a distinct // memconn address, so concurrent instances do not conflict on the registry. var memSeq atomic.Int64 func listen(path string) (net.Listener, error) { name := fmt.Sprintf("%s-%d", memName, memSeq.Add(1)) return memconn.Listen("memu", name) } func connect(ctx context.Context, _ string) (net.Conn, error) { return memconn.DialContext(ctx, "memu", memName) }