From 11b50de72c7088c1d288329b2f40509457639ed0 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Tue, 25 Mar 2025 01:43:33 +0800 Subject: [PATCH] Fix regression in tree/raw dir handling --- http_server.go | 14 ++++++++++++-- diff --git a/http_server.go b/http_server.go index 6531748f44e067ee93c4a747cfd4428e672b1d6e..73e27f68412fb0c0634223c2c63a17a36b2c1ac6 100644 --- a/http_server.go +++ b/http_server.go @@ -38,7 +38,9 @@ if segments, _, err = parseReqURI(request.RequestURI); err != nil { http.Error(writer, err.Error(), http.StatusBadRequest) return } + dirMode := false if segments[len(segments)-1] == "" { + dirMode = true segments = segments[:len(segments)-1] } @@ -184,7 +186,11 @@ if anyContain(segments[sepIndex+4:], "/") { errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments") return } - params["rest"] = strings.Join(segments[sepIndex+4:], "/") + if dirMode { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + "/" + } else { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + } if len(segments) < sepIndex+5 && redirectDir(writer, request) { return } @@ -194,7 +200,11 @@ if anyContain(segments[sepIndex+4:], "/") { errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments") return } - params["rest"] = strings.Join(segments[sepIndex+4:], "/") + if dirMode { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + "/" + } else { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + } if len(segments) < sepIndex+5 && redirectDir(writer, request) { return } -- 2.48.1