From de119aa0bb49ff8ec784566c524fa91e5ca6fc61 Mon Sep 17 00:00:00 2001 From: Solderpunk Date: Thu, 4 Jun 2020 21:32:20 +0200 Subject: [PATCH] Fix trailing slash redirects. --- handler.go | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/handler.go b/handler.go index 98d4301..f5742c4 100644 --- a/handler.go +++ b/handler.go @@ -115,10 +115,17 @@ func handleGeminiRequest(conn net.Conn, config Config, logEntries chan LogEntry) log.Status = 31 return } + // Check for index.gmi if path is a directory + index_path := filepath.Join(path, "index.gmi") + index_info, err := os.Stat(index_path) + if err == nil && uint64(index_info.Mode().Perm())&0444 == 0444 { + serveFile(index_path, log, conn) // Serve a generated listing - conn.Write([]byte("20 text/gemini\r\n")) - log.Status = 20 - conn.Write([]byte(generateDirectoryListing(path))) + } else { + conn.Write([]byte("20 text/gemini\r\n")) + log.Status = 20 + conn.Write([]byte(generateDirectoryListing(path))) + } return } @@ -150,17 +157,6 @@ func resolvePath(path string, config Config) (string, os.FileInfo, error) { if err != nil { return "", nil, err } - // Check for index.gmi if path is a directory - if info.IsDir() { - index_path := filepath.Join(path, "index.gmi") - index_info, err := os.Stat(index_path) - if err == nil { - path = index_path - info = index_info - } else if os.IsPermission(err) { - return "", nil, err - } - } return path, info, nil }