fix: clear HTTP deadlines before WebSocket upgrade in miniapp log viewer
The HTTP server's WriteTimeout/ReadTimeout (5s) was killing WebSocket connections after ~5 seconds. Clear deadlines before Upgrade(), matching the existing pattern in the SSE handler. Also allow same-origin WebSocket connections for Tailscale direct access. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
568bdcb0cd
commit
26481bc003
1 changed files with 9 additions and 0 deletions
|
|
@ -220,6 +220,10 @@ var wsUpgrader = websocket.Upgrader{
|
||||||
if origin == "" {
|
if origin == "" {
|
||||||
return true // non-browser clients (e.g. curl)
|
return true // non-browser clients (e.g. curl)
|
||||||
}
|
}
|
||||||
|
// Allow same-origin requests (e.g. Tailscale direct access)
|
||||||
|
if u, err := url.Parse(origin); err == nil && u.Host == r.Host {
|
||||||
|
return true
|
||||||
|
}
|
||||||
// Allow Telegram WebApp origins and localhost for dev
|
// Allow Telegram WebApp origins and localhost for dev
|
||||||
return strings.HasSuffix(origin, ".telegram.org") ||
|
return strings.HasSuffix(origin, ".telegram.org") ||
|
||||||
strings.HasSuffix(origin, ".t.me") ||
|
strings.HasSuffix(origin, ".t.me") ||
|
||||||
|
|
@ -884,6 +888,11 @@ func (h *Handler) wsLogs(w http.ResponseWriter, r *http.Request) {
|
||||||
minLevel = logger.ParseLevel(levelStr)
|
minLevel = logger.ParseLevel(levelStr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear HTTP server deadlines before WebSocket hijack
|
||||||
|
rc := http.NewResponseController(w)
|
||||||
|
_ = rc.SetWriteDeadline(time.Time{})
|
||||||
|
_ = rc.SetReadDeadline(time.Time{})
|
||||||
|
|
||||||
conn, err := wsUpgrader.Upgrade(w, r, nil)
|
conn, err := wsUpgrader.Upgrade(w, r, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue