From 0b2cf3009676ea73042b7d2c8042ee0658ff57f2 Mon Sep 17 00:00:00 2001 From: Deluan Date: Fri, 16 Feb 2024 18:43:36 -0500 Subject: [PATCH] Don't swallow marshalling errors in the Subsonic API --- server/subsonic/api.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/subsonic/api.go b/server/subsonic/api.go index 0f8c909f..18ac2da6 100644 --- a/server/subsonic/api.go +++ b/server/subsonic/api.go @@ -286,20 +286,24 @@ func sendResponse(w http.ResponseWriter, r *http.Request, payload *responses.Sub p := req.Params(r) f, _ := p.String("f") var response []byte + var err error switch f { case "json": w.Header().Set("Content-Type", "application/json") wrapper := &responses.JsonWrapper{Subsonic: *payload} - response, _ = json.Marshal(wrapper) + response, err = json.Marshal(wrapper) case "jsonp": w.Header().Set("Content-Type", "application/javascript") callback, _ := p.String("callback") wrapper := &responses.JsonWrapper{Subsonic: *payload} - data, _ := json.Marshal(wrapper) - response = []byte(fmt.Sprintf("%s(%s)", callback, data)) + response, err = json.Marshal(wrapper) + response = []byte(fmt.Sprintf("%s(%s)", callback, response)) default: w.Header().Set("Content-Type", "application/xml") - response, _ = xml.Marshal(payload) + response, err = xml.Marshal(payload) + } + if err != nil { + log.Error(r.Context(), "Error marshalling response", "format", f, err) } if payload.Status == "ok" { if log.IsGreaterOrEqualTo(log.LevelTrace) {