From 825b092015e1d4f7bb1fa637b7397c539dca34b3 Mon Sep 17 00:00:00 2001 From: matthew-hull-bright Date: Fri, 11 Sep 2026 15:37:07 +0100 Subject: [PATCH] fix(terraform): reject empty-body 2xx responses in mcp server handler --- terraform/provider/litellm/utils.go | 4 ---- terraform/provider/litellm/utils_test.go | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/terraform/provider/litellm/utils.go b/terraform/provider/litellm/utils.go index 5033285e824..eb68f919d00 100644 --- a/terraform/provider/litellm/utils.go +++ b/terraform/provider/litellm/utils.go @@ -147,10 +147,6 @@ func handleMCPAPIResponse(resp *http.Response, result interface{}, client *Clien resp.Status, client.redactSensitiveData(string(bodyBytes))) } - if len(bodyBytes) == 0 || string(bodyBytes) == "null" { - return nil - } - if err := json.Unmarshal(bodyBytes, result); err != nil { return fmt.Errorf("failed to parse response: %v", err) } diff --git a/terraform/provider/litellm/utils_test.go b/terraform/provider/litellm/utils_test.go index 2a3f5edb701..10d6a11594a 100644 --- a/terraform/provider/litellm/utils_test.go +++ b/terraform/provider/litellm/utils_test.go @@ -113,7 +113,7 @@ func TestHandleMCPAPIResponseAcceptsFullSuccessRange(t *testing.T) { } } -func TestHandleMCPAPIResponseAcceptsEmptyBodyOn2xx(t *testing.T) { +func TestHandleMCPAPIResponseRejectsEmptyBodyOn2xx(t *testing.T) { rec := httptest.NewRecorder() rec.WriteHeader(http.StatusNoContent) resp := rec.Result() @@ -122,7 +122,7 @@ func TestHandleMCPAPIResponseAcceptsEmptyBodyOn2xx(t *testing.T) { var mcpResp MCPServerResponse err := handleMCPAPIResponse(resp, &mcpResp, client) - if err != nil { - t.Fatalf("handleMCPAPIResponse returned unexpected error for empty-body 204: %v", err) + if err == nil { + t.Fatal("handleMCPAPIResponse returned no error for empty-body 204; every MCP caller (create/read/update) writes the parsed result straight into Terraform state with no fallback, so a silently-accepted empty body would blank out or empty-ID the resource") } }