From 7d6bdd20af4006775b5508c0bbe8508ee0c01154 Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Sun, 10 May 2026 17:03:02 +0200 Subject: [PATCH] fix(handler): adapt to api-go beta.5 HttpHeaderValue.values string type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit api-go v6.0.0-beta.5 changed HttpHeaderValue.values from `repeated bytes` to `repeated string` (api commit 265bb1e). Update the http plugin's handler package to drop the now-incorrect []byte()/string() casts and take the protobuf field as a Go string slice directly. Affected sites: - convert.go: drop []byte(...) on append; collapse the inner loop into a variadic append in convert(); use v directly in convertCookies(). - response.go: drop string(...) on Push, on the trailer SplitSeq input, and on the per-value Header.Add — all three were converting from bytes to string under the old proto and are no-ops now. Bumps api-go v6.0.0-beta.4 → v6.0.0-beta.5 in the root module. tests/ submodule unchanged (still on beta.4 alongside the rest of the test toolchain; tests-side migration tracked separately). --- go.mod | 2 +- go.sum | 4 ++-- go.work.sum | 1 + handler/convert.go | 6 ++---- handler/response.go | 10 +++++----- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 84bd0b5..b5c1f5e 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/mholt/acmez v1.2.0 github.com/prometheus/client_golang v1.23.2 github.com/quic-go/quic-go v0.59.0 - github.com/roadrunner-server/api-go/v6 v6.0.0-beta.4 + github.com/roadrunner-server/api-go/v6 v6.0.0-beta.5 github.com/roadrunner-server/api-plugins/v6 v6.0.0-beta.2 github.com/roadrunner-server/context v1.3.0 github.com/roadrunner-server/endure/v2 v2.6.2 diff --git a/go.sum b/go.sum index 9d37f4e..73d8ef9 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,8 @@ github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw= github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= -github.com/roadrunner-server/api-go/v6 v6.0.0-beta.4 h1:wX8IezPUeeBJzlzaBEFSZBE5Bc/Le1Uf/GdFRdFO3HQ= -github.com/roadrunner-server/api-go/v6 v6.0.0-beta.4/go.mod h1:jI30i64yCAxJh7KHc8e1B8NgDcvcnSTI1OIK8lTE+Y0= +github.com/roadrunner-server/api-go/v6 v6.0.0-beta.5 h1:4x17K8qmxIbtKrCKoY1NR7bBvJbrB7w0P/0ovYR8C6E= +github.com/roadrunner-server/api-go/v6 v6.0.0-beta.5/go.mod h1:B9CjHMnKrAUNM99XckiA8NEKg0oid22KqejR+lRnohw= github.com/roadrunner-server/api-plugins/v6 v6.0.0-beta.2 h1:GqsZzWQ5jMXRF1O/b8IqFz9PLpS7Ui0K4OyACLql2MI= github.com/roadrunner-server/api-plugins/v6 v6.0.0-beta.2/go.mod h1:2v4yUK5Kvbvq8C3IkDoBkuamq9h+7i/JLjyf7k1j5JM= github.com/roadrunner-server/context v1.3.0 h1:iyTXVORhPU2/26z7kdzEaggwG5P8yhIKUDLiePjylFQ= diff --git a/go.work.sum b/go.work.sum index c6bb95d..003beba 100644 --- a/go.work.sum +++ b/go.work.sum @@ -2741,6 +2741,7 @@ go.temporal.io/api v1.30.0/go.mod h1:PIZ+UyGTMh3HJFauMysfanNBAh3f0jRf1xydrhTEcSQ go.temporal.io/api v1.57.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= go.temporal.io/api v1.62.2 h1:jFhIzlqNyJsJZTiCRQmTIMv6OTQ5BZ57z8gbgLGMaoo= go.temporal.io/api v1.62.2/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= +go.temporal.io/api v1.62.11/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= go.temporal.io/sdk v1.26.0-rc.2 h1:0NX4wR2qwD6xCv+JNhZdViamsITMYWzZkUqBJEIVHBw= go.temporal.io/sdk v1.26.0-rc.2/go.mod h1:HDr8fIWJ/HF8dJwTPgOayI8PYB5WoVIxUMjzE78M2ng= go.temporal.io/sdk/contrib/opentelemetry v0.4.0 h1:Ddx+39cESh4CNFI6cy8TI1OBJC8MUQUDzt6TpIJJjPQ= diff --git a/handler/convert.go b/handler/convert.go index f71f493..9031e68 100644 --- a/handler/convert.go +++ b/handler/convert.go @@ -18,9 +18,7 @@ func convert(headers http.Header) map[string]*httpV2proto.HttpHeaderValue { resp[k] = &httpV2proto.HttpHeaderValue{} } - for _, vv := range v { - resp[k].Values = append(resp[k].GetValues(), []byte(vv)) - } + resp[k].Values = append(resp[k].GetValues(), v...) } return resp @@ -38,7 +36,7 @@ func convertCookies(headers map[string]string) map[string]*httpV2proto.HttpHeade resp[k] = &httpV2proto.HttpHeaderValue{} } - resp[k].Values = append(resp[k].GetValues(), []byte(v)) + resp[k].Values = append(resp[k].GetValues(), v) } return resp diff --git a/handler/response.go b/handler/response.go index 12ac95e..f82779c 100644 --- a/handler/response.go +++ b/handler/response.go @@ -54,7 +54,7 @@ func (h *Handler) handlePROTOresponse(pld *payload.Payload, w http.ResponseWrite if pusher, ok := w.(http.Pusher); ok { for _, pushVal := range push { - err = pusher.Push(string(pushVal), nil) + err = pusher.Push(pushVal, nil) if err != nil { return err } @@ -67,9 +67,9 @@ func (h *Handler) handlePROTOresponse(pld *payload.Payload, w http.ResponseWrite } // write all headers from the response to the writer - for k := range rsp.GetHeaders() { - for kk := range rsp.GetHeaders()[k].GetValues() { - w.Header().Add(k, string(rsp.GetHeaders()[k].GetValues()[kk])) + for k, hv := range rsp.GetHeaders() { + for _, v := range hv.GetValues() { + w.Header().Add(k, v) } } @@ -101,7 +101,7 @@ func (h *Handler) handlePROTOresponse(pld *payload.Payload, w http.ResponseWrite func handleProtoTrailers(h map[string]*httpV2proto.HttpHeaderValue) { for _, tr := range h[Trailer].GetValues() { - for n := range strings.SplitSeq(string(tr), ",") { + for n := range strings.SplitSeq(tr, ",") { n = strings.Trim(n, "\t ") if v, ok := h[n]; ok { h["Trailer:"+n] = v