about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBen Morrison <ben@gbmor.dev>2019-06-11 20:02:45 -0400
committerBen Morrison <ben@gbmor.dev>2019-06-11 20:02:45 -0400
commitadee7fa6333265028f67d7b8bb66ddc3ceef1d05 (patch)
treed6aeda5660263e27cf42e6180f65e9817a7754a8
parent3da400b21057054493feac798111cbbb3ed307b8 (diff)
downloadgetwtxt-adee7fa6333265028f67d7b8bb66ddc3ceef1d05.tar.gz
runtime bugs in staticHandler
-rw-r--r--svc/handlers.go31
1 files changed, 12 insertions, 19 deletions
diff --git a/svc/handlers.go b/svc/handlers.go
index 38c8bfa..9ab9cdb 100644
--- a/svc/handlers.go
+++ b/svc/handlers.go
@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"net/http"
 	"strconv"
+	"strings"
 	"time"
 
 	"github.com/getwtxt/registry"
@@ -17,16 +18,19 @@ func getEtag(modtime time.Time) string {
 	return fmt.Sprintf("%x", sha256.Sum256(shabytes))
 }
 
-func sendStaticEtag(w http.ResponseWriter, isCSS bool) {
+func servStatic(w http.ResponseWriter, isCSS bool) error {
 	if isCSS {
 		etag := getEtag(staticCache.cssMod)
 		w.Header().Set("ETag", "\""+etag+"\"")
 		w.Header().Set("Content-Type", cssutf8)
-		return
+		_, err := w.Write(staticCache.css)
+		return err
 	}
 	etag := getEtag(staticCache.indexMod)
 	w.Header().Set("ETag", "\""+etag+"\"")
 	w.Header().Set("Content-Type", htmlutf8)
+	_, err := w.Write(staticCache.index)
+	return err
 }
 
 // handles "/" and "/css"
@@ -37,23 +41,12 @@ func staticHandler(w http.ResponseWriter, r *http.Request) {
 	// to send as an ETag. If an error occurred when grabbing the file info,
 	// the ETag will be empty.
 	staticCache.mu.RLock()
-	switch r.URL.Path {
-	case "/css":
-		sendStaticEtag(w, true)
-		_, err := w.Write(staticCache.css)
-		if err != nil {
-			staticCache.mu.RUnlock()
-			errHTTP(w, r, err, http.StatusInternalServerError)
-			return
-		}
-	default:
-		sendStaticEtag(w, false)
-		_, err := w.Write(staticCache.index)
-		if err != nil {
-			staticCache.mu.RUnlock()
-			errHTTP(w, r, err, http.StatusInternalServerError)
-			return
-		}
+	isCSS := strings.Contains(r.URL.Path, "css")
+	err := servStatic(w, isCSS)
+	if err != nil {
+		staticCache.mu.RUnlock()
+		errHTTP(w, r, err, http.StatusInternalServerError)
+		return
 	}
 	staticCache.mu.RUnlock()