net/ktimeout: add a package to set TCP user timeout

Setting a user timeout will be a more practical tuning knob for a number
of endpoints, this provides a way to set it.

Updates tailscale/corp#17587

Signed-off-by: James Tucker <james@tailscale.com>
This commit is contained in:
James Tucker
2024-02-18 18:56:43 -08:00
committed by James Tucker
parent a4a909a20b
commit 8fe504241d
5 changed files with 136 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package ktimeout
import (
"context"
"fmt"
"net"
"time"
)
func ExampleUserTimeout() {
lc := net.ListenConfig{
Control: UserTimeout(30 * time.Second),
}
l, err := lc.Listen(context.TODO(), "tcp", "127.0.0.1:0")
if err != nil {
fmt.Printf("error: %v", err)
return
}
l.Close()
// Output:
}