From cbcc3ecf43c3d3cdd3c2c932885ca3132f93cfd3 Mon Sep 17 00:00:00 2001 From: rinfx Date: Wed, 28 Jan 2026 10:52:45 +0800 Subject: [PATCH] bugfix for model-mapper & model-router (#3370) --- plugins/wasm-go/extensions/model-mapper/main.go | 11 +++++++---- plugins/wasm-go/extensions/model-router/main.go | 12 ++++++------ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/plugins/wasm-go/extensions/model-mapper/main.go b/plugins/wasm-go/extensions/model-mapper/main.go index 2278b8e11..abf3c202f 100644 --- a/plugins/wasm-go/extensions/model-mapper/main.go +++ b/plugins/wasm-go/extensions/model-mapper/main.go @@ -1,6 +1,7 @@ package main import ( + "encoding/json" "errors" "sort" "strings" @@ -136,11 +137,8 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config Config) types.Action { break } } - if !matched { - return types.ActionContinue - } - if !ctx.HasRequestBody() { + if !matched || !ctx.HasRequestBody() { ctx.DontReadRequestBody() return types.ActionContinue } @@ -158,6 +156,11 @@ func onHttpRequestBody(ctx wrapper.HttpContext, config Config, body []byte) type return types.ActionContinue } + if !json.Valid(body) { + log.Error("invalid json body") + return types.ActionContinue + } + oldModel := gjson.GetBytes(body, config.modelKey).String() newModel := config.defaultModel diff --git a/plugins/wasm-go/extensions/model-router/main.go b/plugins/wasm-go/extensions/model-router/main.go index d67b21956..7ed24ba8e 100644 --- a/plugins/wasm-go/extensions/model-router/main.go +++ b/plugins/wasm-go/extensions/model-router/main.go @@ -2,6 +2,7 @@ package main import ( "bytes" + "encoding/json" "io" "mime" "mime/multipart" @@ -91,15 +92,11 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config ModelRouterConfig) typ } } - if !enable { + if !enable || !ctx.HasRequestBody() { ctx.DontReadRequestBody() return types.ActionContinue } - if !ctx.HasRequestBody() { - return types.ActionContinue - } - // Prepare for body processing proxywasm.RemoveHttpRequestHeader("content-length") // 100MB buffer limit @@ -124,7 +121,10 @@ func onHttpRequestBody(ctx wrapper.HttpContext, config ModelRouterConfig, body [ } func handleJsonBody(ctx wrapper.HttpContext, config ModelRouterConfig, body []byte) types.Action { - + if !json.Valid(body) { + log.Error("invalid json body") + return types.ActionContinue + } modelValue := gjson.GetBytes(body, config.modelKey).String() if modelValue == "" { return types.ActionContinue