From 247de6a349345b9608cf11a07236a419a4dd9997 Mon Sep 17 00:00:00 2001 From: Jingze <52855280+Jing-ze@users.noreply.github.com> Date: Wed, 13 Aug 2025 11:37:01 +0800 Subject: [PATCH] fix(golang-filter): fix bug of stop and buffer in decode data (#2754) --- pkg/ingress/kube/configmap/mcp_server.go | 5 +++++ plugins/golang-filter/mcp-server/filter.go | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/ingress/kube/configmap/mcp_server.go b/pkg/ingress/kube/configmap/mcp_server.go index fd173c046..66aa09279 100644 --- a/pkg/ingress/kube/configmap/mcp_server.go +++ b/pkg/ingress/kube/configmap/mcp_server.go @@ -509,6 +509,11 @@ func (m *McpServerController) constructMcpSessionStruct(mcp *McpServer) string { } func (m *McpServerController) constructMcpServerStruct(mcp *McpServer) string { + // if no servers, return empty string + if mcp == nil || len(mcp.Servers) == 0 { + return "" + } + // Build servers configuration servers := "[]" if len(mcp.Servers) > 0 { diff --git a/plugins/golang-filter/mcp-server/filter.go b/plugins/golang-filter/mcp-server/filter.go index 309019cb8..a23840f9b 100644 --- a/plugins/golang-filter/mcp-server/filter.go +++ b/plugins/golang-filter/mcp-server/filter.go @@ -57,12 +57,12 @@ func (f *filter) DecodeHeaders(header api.RequestHeaderMap, endStream bool) api. } func (f *filter) DecodeData(buffer api.BufferInstance, endStream bool) api.StatusType { - if !endStream { - return api.StopAndBuffer - } if f.message { for _, server := range f.config.servers { if f.path == server.BaseServer.GetMessageEndpoint() { + if !endStream { + return api.StopAndBuffer + } // Create a response recorder to capture the response recorder := httptest.NewRecorder() // Call the handleMessage method of SSEServer with complete body