@@ -87,7 +87,7 @@ func (p *Proxy) ProxyHTTP(
8787 case ingress.HTTPOriginProxy :
8888 if err := p .proxyHTTPRequest (
8989 w ,
90- req ,
90+ tr ,
9191 originProxy ,
9292 isWebsocket ,
9393 rule .Config .DisableChunkedEncoding ,
@@ -159,15 +159,15 @@ func ruleField(ing ingress.Ingress, ruleNum int) (ruleID string, srv string) {
159159// ProxyHTTPRequest proxies requests of underlying type http and websocket to the origin service.
160160func (p * Proxy ) proxyHTTPRequest (
161161 w connection.ResponseWriter ,
162- req * http. Request ,
162+ tr * tracing. TracedRequest ,
163163 httpService ingress.HTTPOriginProxy ,
164164 isWebsocket bool ,
165165 disableChunkedEncoding bool ,
166166 fields logFields ,
167167) error {
168- roundTripReq := req
168+ roundTripReq := tr . Request
169169 if isWebsocket {
170- roundTripReq = req . Clone (req .Context ())
170+ roundTripReq = tr . Request . Clone (tr . Request .Context ())
171171 roundTripReq .Header .Set ("Connection" , "Upgrade" )
172172 roundTripReq .Header .Set ("Upgrade" , "websocket" )
173173 roundTripReq .Header .Set ("Sec-Websocket-Version" , "13" )
@@ -177,7 +177,7 @@ func (p *Proxy) proxyHTTPRequest(
177177 // Support for WSGI Servers by switching transfer encoding from chunked to gzip/deflate
178178 if disableChunkedEncoding {
179179 roundTripReq .TransferEncoding = []string {"gzip" , "deflate" }
180- cLength , err := strconv .Atoi (req .Header .Get ("Content-Length" ))
180+ cLength , err := strconv .Atoi (tr . Request .Header .Get ("Content-Length" ))
181181 if err == nil {
182182 roundTripReq .ContentLength = int64 (cLength )
183183 }
@@ -197,6 +197,9 @@ func (p *Proxy) proxyHTTPRequest(
197197 }
198198 defer resp .Body .Close ()
199199
200+ // Add spans to response header (if available)
201+ tr .AddSpans (resp .Header , p .log )
202+
200203 err = w .WriteRespHeaders (resp .StatusCode , resp .Header )
201204 if err != nil {
202205 return errors .Wrap (err , "Error writing response header" )
@@ -211,7 +214,7 @@ func (p *Proxy) proxyHTTPRequest(
211214
212215 eyeballStream := & bidirectionalStream {
213216 writer : w ,
214- reader : req .Body ,
217+ reader : tr . Request .Body ,
215218 }
216219
217220 websocket .Stream (eyeballStream , rwc , p .log )
0 commit comments