@@ -70,15 +70,15 @@ func TestStreamingSessionIDDetection(t *testing.T) {
7070}
7171
7272func createBasicProxy (p * TransparentProxy , targetURL * url.URL ) * httputil.ReverseProxy {
73- proxy := httputil .NewSingleHostReverseProxy (targetURL )
74- proxy .Director = func (r * http.Request ) {
75- r .URL .Scheme = targetURL .Scheme
76- r .URL .Host = targetURL .Host
77- r .Host = targetURL .Host
73+ proxy := & httputil.ReverseProxy {
74+ Rewrite : func (pr * httputil.ProxyRequest ) {
75+ pr .SetURL (targetURL )
76+ pr .SetXForwarded ()
77+ },
78+ FlushInterval : - 1 ,
79+ Transport : & tracingTransport {base : http .DefaultTransport , p : p },
80+ ModifyResponse : p .modifyResponse ,
7881 }
79- proxy .FlushInterval = - 1
80- proxy .Transport = & tracingTransport {base : http .DefaultTransport , p : p }
81- proxy .ModifyResponse = p .modifyResponse
8282 return proxy
8383}
8484
@@ -157,22 +157,18 @@ func TestTracePropagationHeaders(t *testing.T) {
157157 targetURL , err := url .Parse (downstream .URL )
158158 assert .NoError (t , err )
159159
160- // Create reverse proxy with the same director logic as the main code
161- reverseProxy := httputil .NewSingleHostReverseProxy ( targetURL )
162- reverseProxy . FlushInterval = - 1
163-
164- // Store the original director
165- originalDirector := reverseProxy . Director
160+ // Create reverse proxy with the same rewrite logic as the main code
161+ reverseProxy := & httputil.ReverseProxy {
162+ FlushInterval : - 1 ,
163+ Rewrite : func ( pr * httputil. ProxyRequest ) {
164+ pr . SetURL ( targetURL )
165+ pr . SetXForwarded ()
166166
167- // Override director to inject trace propagation headers (same as main code)
168- reverseProxy .Director = func (req * http.Request ) {
169- // Apply original director logic first
170- originalDirector (req )
171-
172- // Inject OpenTelemetry trace propagation headers for downstream tracing
173- if req .Context () != nil {
174- otel .GetTextMapPropagator ().Inject (req .Context (), propagation .HeaderCarrier (req .Header ))
175- }
167+ // Inject OpenTelemetry trace propagation headers for downstream tracing
168+ if pr .Out .Context () != nil {
169+ otel .GetTextMapPropagator ().Inject (pr .Out .Context (), propagation .HeaderCarrier (pr .Out .Header ))
170+ }
171+ },
176172 }
177173
178174 reverseProxy .Transport = & tracingTransport {base : http .DefaultTransport , p : proxy }
0 commit comments