package main import ( "net/http" "riedstra.dev/mitch/steam-export/steam" ) func (a *App) HandleIndex(w http.ResponseWriter, r *http.Request) { // During rendering of the template I believe it's // mutating during the sort of keys, so Lib no longer // is an RWMutex and we're just locking this as if // we're writing to it a.Library.Lock() defer a.Library.Unlock() a.Status.Lock() defer a.Status.Unlock() err := a.Templates.ExecuteTemplate(w, "index", struct { Lib *steam.Library Info *statusInfo Local bool HostIP string Port string Version string }{ &a.Library.Library, a.Status, isLocal(r.RemoteAddr), getHostIP(), getPort(), Version, }) if err != nil { Logger.Printf("While Rendering template: %s", err) } Logger.Printf("Client %s Index page", r.RemoteAddr) }