fix(aiproxy): handle response body closure and inspect return types

This commit is contained in:
2026-10-07 23:41:28 +02:00
parent 63cb0d22eb
commit d2f33b8f7d
2 changed files with 7 additions and 5 deletions
+5 -4
View File
@@ -15,9 +15,10 @@ import (
"sync"
"time"
"github.com/tidwall/gjson"
"github.com/bitechdev/ResolveSpec/pkg/logger"
"github.com/bitechdev/ResolveSpec/pkg/security"
"github.com/tidwall/gjson"
)
type ctxKey struct{}
@@ -198,7 +199,7 @@ func (p *Proxy) buildProxy(t *target) *httputil.ReverseProxy {
}
if resp.StatusCode == http.StatusUnauthorized {
logger.Warn("aiproxy: upstream %q rejected its credentials", t.up.Name)
resp.Body.Close()
_ = resp.Body.Close()
body, _ := json.Marshal(errorBody("bad_gateway", "upstream rejected the proxy credentials"))
resp.StatusCode, resp.Status = http.StatusBadGateway, "502 Bad Gateway"
resp.Body = io.NopCloser(bytes.NewReader(body))
@@ -226,7 +227,7 @@ func (p *Proxy) buildProxy(t *target) *httputil.ReverseProxy {
// inspect reads JSON request bodies to extract/enforce model and tools.
// It returns a non-zero status when the request must be rejected.
func (p *Proxy) inspect(t *target, r *http.Request, hc *HookContext) (int, string, string) {
func (p *Proxy) inspect(t *target, r *http.Request, hc *HookContext) (status int, errType, msg string) {
switch r.Method {
case http.MethodPost, http.MethodPut, http.MethodPatch:
default:
@@ -246,7 +247,7 @@ func (p *Proxy) inspect(t *target, r *http.Request, hc *HookContext) (int, strin
}
body, err := io.ReadAll(io.LimitReader(r.Body, p.cfg.MaxBodyBytes+1))
r.Body.Close()
_ = r.Body.Close()
if err != nil {
return http.StatusBadRequest, "invalid_request_error", "could not read request body"
}
+2 -1
View File
@@ -38,7 +38,8 @@ func (p *Proxy) Reload(ctx context.Context, store UpstreamStore) error {
var retired []*target
p.mu.Lock()
for _, d := range defs {
for i := range defs {
d := defs[i]
name := d.Upstream.Name
if _, dup := next[name]; dup {
errs = append(errs, fmt.Errorf("aiproxy: duplicate stored upstream %q", name))