Files
crossbar/internal/proxy/control.go
T
kyle 33fa61bedb Control-plane requests follow the lease but take no slot and write no row
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 17:44:00 -07:00

32 lines
1.1 KiB
Go

package proxy
import (
"net/http"
"git.wntrmute.dev/kyle/crossbar/internal/config"
)
// isControlCall reports whether r is a control-plane call: a GET or HEAD on any allowed path, or a
// POST to exactly /tokenize or /v1/chat/completions/control. Everything else — in particular a chat
// completion on /v1/chat/completions — is not a control call. rest is the upstream path, not the
// query string.
func isControlCall(method, rest string) bool {
if method == http.MethodGet || method == http.MethodHead {
return true
}
return method == http.MethodPost && (rest == "/tokenize" || rest == "/v1/chat/completions/control")
}
// resolveModel returns the model for a request: the body's top-level "model" wins (already read by
// peekModel), else the ?model= query parameter, else the route's default_model. The result keys the
// lease and the limiter pair.
func resolveModel(model string, r *http.Request, routeCfg config.Route) string {
if model == "" {
model = r.URL.Query().Get("model")
}
if model == "" {
model = routeCfg.DefaultModel
}
return model
}