From e8eb9d71c2ab5e24d62cf2082d13d3d08366a041 Mon Sep 17 00:00:00 2001 From: Codinget Date: Thu, 16 Apr 2026 18:43:58 +0000 Subject: [PATCH] fix(tsconnect): guard nil n.Prefs in notify callback n.Prefs is *PrefsView (a pointer), so calling n.Prefs.Valid() on a Notify where Prefs is nil auto-dereferenced nil and panicked. The callback's defer recover() swallowed the panic, which meant every Notify without Prefs (Health-only, FilesWaiting, IncomingFiles, OutgoingFiles, etc.) never reached the file-related JS calls. Co-Authored-By: Claude Opus 4.7 --- cmd/tsconnect/wasm/wasm_js.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/tsconnect/wasm/wasm_js.go b/cmd/tsconnect/wasm/wasm_js.go index 8b5b1a876..38f44a9bc 100644 --- a/cmd/tsconnect/wasm/wasm_js.go +++ b/cmd/tsconnect/wasm/wasm_js.go @@ -388,7 +388,7 @@ func (i *jsIPN) run(jsCallbacks js.Value) { log.Printf("Could not generate JSON netmap: %v", err) } } - if n.Prefs.Valid() { + if n.Prefs != nil && n.Prefs.Valid() { jsCallbacks.Call("notifyExitNode", string(n.Prefs.ExitNodeID())) } if n.BrowseToURL != nil {