summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2026-09-24 22:01:19 -0700
committerRose Hogenson <rosehogenson@posteo.net>2026-09-24 22:02:13 -0700
commit16e17c92a2d57b1f5e0b963624d4e15148ef2f61 (patch)
tree5ad363f27282ec371ae5c1409fdc650496475004
parentRevert "Add back logging" (diff)
downloadroseh.moe-16e17c92a2d57b1f5e0b963624d4e15148ef2f61.tar.zst
Extend write deadline beyond the read deadline
-rw-r--r--roseh.moe.go13
1 files changed, 9 insertions, 4 deletions
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,
}