From 5f0dc3ce6ff3f74363f4425ac0bd154aa3070ea8 Mon Sep 17 00:00:00 2001 From: SirStendec Date: Sun, 17 Sep 2017 14:22:31 -0400 Subject: [PATCH] SocketServer: When parsing errors from the backend, ignore `;charset=` in Content-Type headers. --- socketserver/server/backend.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/socketserver/server/backend.go b/socketserver/server/backend.go index 5bae575d..b0684c64 100644 --- a/socketserver/server/backend.go +++ b/socketserver/server/backend.go @@ -140,7 +140,14 @@ func (backend *backendInfo) SendRemoteCommand(remoteCommand, data string, auth A if resp.StatusCode == 401 { return "", ErrAuthorizationNeeded } else if resp.StatusCode < 200 || resp.StatusCode > 299 { // any non-2xx - if resp.Header.Get("Content-Type") == "application/json" { + // If the Content-Type header includes a charset, ignore it. + typeStr := resp.Header.Get("Content-Type") + splitIdx := strings.Index(typeStr, ";") + if ( splitIdx != -1 ) { + typeStr = strings.TrimSpace(typeStr[0:splitIdx]) + } + + if typeStr == "application/json" { var err2 ErrForwardedFromBackend err := json.Unmarshal(respBytes, &err2.JSONError) if err != nil {