forwardResp writes whole response as received to ResponseWriter
(w http.ResponseWriter)
| 431 | |
| 432 | // forwardResp writes whole response as received to ResponseWriter |
| 433 | func (r *responseCopier) forwardResp(w http.ResponseWriter) error { |
| 434 | // no response was received, nothing to forward |
| 435 | if !r.responseReceived.Load() { |
| 436 | return nil |
| 437 | } |
| 438 | |
| 439 | w.Header().Set("Content-Type", r.responseHeaders.Get("Content-Type")) |
| 440 | w.WriteHeader(r.responseStatus) |
| 441 | |
| 442 | b, err := r.readAll() |
| 443 | if err != nil { |
| 444 | return xerrors.Errorf("failed to read response body: %w", err) |
| 445 | } |
| 446 | |
| 447 | if _, err := w.Write(b); err != nil { |
| 448 | return xerrors.Errorf("failed to write response body: %w", err) |
| 449 | } |
| 450 | return nil |
| 451 | } |
| 452 | |
| 453 | // deltaBuffer is a thread safe byte buffer |
| 454 | // supports reading incremental data (added after last read) |