Skip to content

Commit 15ed467

Browse files
committed
Fix import cycle
1 parent 45b969a commit 15ed467

File tree

4 files changed

+9
-7
lines changed

4 files changed

+9
-7
lines changed

coderd/coderd.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ func New(options *Options) *API {
356356
apiRateLimiter := httpmw.RateLimit(options.APIRateLimit, time.Minute)
357357

358358
derpHandler := derphttp.Handler(api.DERPServer)
359-
derpHandler = tailnet.WithWebsocketSupport(api.WebsocketWatch, api.DERPServer, derpHandler)
359+
derpHandler = tailnet.WithWebsocketSupport(api.WebsocketWatch.Accept, api.DERPServer, derpHandler)
360360

361361
r.Use(
362362
httpmw.Recover(api.Logger),

coderd/healthcheck/derp_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func TestDERP(t *testing.T) {
132132
defer derpSrv.Close()
133133

134134
sockets := activewebsockets.New(ctx)
135-
handler := tailnet.WithWebsocketSupport(sockets, derpSrv, derphttp.Handler(derpSrv))
135+
handler := tailnet.WithWebsocketSupport(sockets.Accept, derpSrv, derphttp.Handler(derpSrv))
136136
defer sockets.Close()
137137

138138
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

tailnet/derp.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,17 @@ import (
88
"nhooyr.io/websocket"
99
"tailscale.com/derp"
1010
"tailscale.com/net/wsconn"
11-
12-
"github.com/coder/coder/coderd/activewebsockets"
1311
)
1412

13+
type HandleWebsocket func(rw http.ResponseWriter, r *http.Request, options *websocket.AcceptOptions, f func(conn *websocket.Conn))
14+
1515
// WithWebsocketSupport returns an http.Handler that upgrades
1616
// connections to the "derp" subprotocol to WebSockets and
1717
// passes them to the DERP server.
1818
// Taken from: https://github.com/tailscale/tailscale/blob/e3211ff88ba85435f70984cf67d9b353f3d650d8/cmd/derper/websocket.go#L21
19-
func WithWebsocketSupport(sockets *activewebsockets.Active, s *derp.Server, base http.Handler) http.Handler {
19+
// The accept function is used to accept the websocket connection and allows the caller to
20+
// also affect the lifecycle of the websocket connection. (Eg. to close the connection on shutdown)
21+
func WithWebsocketSupport(accept HandleWebsocket, s *derp.Server, base http.Handler) http.Handler {
2022
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
2123
up := strings.ToLower(r.Header.Get("Upgrade"))
2224

@@ -28,7 +30,7 @@ func WithWebsocketSupport(sockets *activewebsockets.Active, s *derp.Server, base
2830
return
2931
}
3032

31-
sockets.Accept(w, r, &websocket.AcceptOptions{
33+
accept(w, r, &websocket.AcceptOptions{
3234
Subprotocols: []string{"derp"},
3335
OriginPatterns: []string{"*"},
3436
// Disable compression because we transmit WireGuard messages that

tailnet/tailnettest/tailnettest.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func RunDERPOnlyWebSockets(t *testing.T) *tailcfg.DERPMap {
7878
defer cancel()
7979
sockets := activewebsockets.New(ctx)
8080

81-
handler = tailnet.WithWebsocketSupport(sockets, d, handler)
81+
handler = tailnet.WithWebsocketSupport(sockets.Accept, d, handler)
8282
server := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
8383
if r.URL.Path != "/derp" {
8484
handler.ServeHTTP(w, r)

0 commit comments

Comments
 (0)