From 16e17c92a2d57b1f5e0b963624d4e15148ef2f61 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Thu, 24 Sep 2026 22:01:19 -0700 Subject: Extend write deadline beyond the read deadline --- roseh.moe.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'roseh.moe.go') diff --git a/roseh.moe.go b/roseh.moe.go index fd48b3c..0aa75be 100644 --- a/roseh.moe.go +++ b/roseh.moe.go @@ -1155,7 +1155,9 @@ func (h *timeoutHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { if err := rc.SetReadDeadline(deadline); err != nil { log.Printf("Error: set read deadline: %s", err) } - if err := rc.SetWriteDeadline(deadline); err != nil { + // Give some extra time to write the error + writeDeadline := deadline.Add(time.Minute) + if err := rc.SetWriteDeadline(writeDeadline); err != nil { log.Printf("Error: set write deadline: %s", err) } ctx, cancel := context.WithDeadline(ctx, deadline) @@ -1241,12 +1243,13 @@ func main() { apiMux.HandleFunc("PUT /api/wormhole/{name}", wormholeAPIUpload) mux.Handle("/api/", apiMux) mux.Handle("/", &timeoutHandler{h: http.HandlerFunc(notFound), timeout: 5 * time.Minute}) - http.Handle(selfURL.Hostname()+"/", http.NewCrossOriginProtection().Handler(&gzipHandler{mux})) + serverMux := http.NewServeMux() + serverMux.Handle(selfURL.Hostname()+"/", http.NewCrossOriginProtection().Handler(&gzipHandler{mux})) jellyfinURL, err := url.Parse("http://127.0.0.1:8096") if err != nil { log.Fatal(err) } - http.Handle("cinema."+selfURL.Hostname()+"/", &authHandler{h: &httputil.ReverseProxy{ + serverMux.Handle("cinema."+selfURL.Hostname()+"/", &authHandler{h: &httputil.ReverseProxy{ Rewrite: func(r *httputil.ProxyRequest) { r.SetURL(jellyfinURL) r.SetXForwarded() @@ -1268,8 +1271,10 @@ func main() { } cgitCGI.PathLocationHandler = cgitCGI codeMux.Handle("/", &timeoutHandler{h: cgitCGI, timeout: 5 * time.Minute}) - http.Handle("code."+selfURL.Hostname()+"/", &gzipHandler{codeMux}) + serverMux.Handle("code."+selfURL.Hostname()+"/", &gzipHandler{codeMux}) server := &http.Server{ + Handler: serverMux, + ReadHeaderTimeout: 5 * time.Minute, IdleTimeout: 10 * time.Minute, } -- cgit v1.3.1