Fix infinite redirect bug.

Previously, URLs without trailing slashes in the path which
resolved to directories caused infinite redirects if there was
anything in the URL after the path (like a query).

Thanks to both Luke Emmet and Stephane Bortzmeyer for reporting
this!
This commit is contained in:
Solderpunk 2021-01-24 16:27:07 +01:00
parent 3d4d830e98
commit e06f8bddbc
1 changed files with 2 additions and 1 deletions

View File

@ -205,7 +205,8 @@ func serveDirectory(URL *url.URL, path string, log *LogEntry, conn net.Conn, con
// Redirect to add trailing slash if missing
// (otherwise relative links don't work properly)
if !strings.HasSuffix(URL.Path, "/") {
conn.Write([]byte(fmt.Sprintf("31 %s\r\n", URL.String()+"/")))
URL.Path += "/"
conn.Write([]byte(fmt.Sprintf("31 %s\r\n", URL.String())))
log.Status = 31
return
}