diff --git a/h2mux/header.go b/h2mux/header.go index bc28c371..cdb5ddaa 100644 --- a/h2mux/header.go +++ b/h2mux/header.go @@ -236,14 +236,14 @@ type responseMetaHeader struct { Source string `json:"src"` } -func CreateResponseMetaHeader(source string) Header { +func CreateResponseMetaHeader(headerName, source string) Header { jsonResponseMetaHeader, err := json.Marshal(responseMetaHeader{Source: source}) if err != nil { panic(err) } return Header{ - Name: ResponseMetaHeaderField, + Name: headerName, Value: string(jsonResponseMetaHeader), } } diff --git a/origin/tunnel.go b/origin/tunnel.go index a11a514d..bc4b9c50 100644 --- a/origin/tunnel.go +++ b/origin/tunnel.go @@ -606,7 +606,7 @@ func (h *TunnelHandler) ServeStream(stream *h2mux.MuxedStream) error { req, reqErr := h.createRequest(stream) if reqErr != nil { - h.logError(stream, reqErr) + h.writeErrorResponse(stream, reqErr) return reqErr } @@ -622,7 +622,7 @@ func (h *TunnelHandler) ServeStream(stream *h2mux.MuxedStream) error { resp, respErr = h.serveHTTP(stream, req) } if respErr != nil { - h.logError(stream, respErr) + h.writeErrorResponse(stream, respErr) return respErr } h.logResponseOk(resp, cfRay, lbProbe) @@ -689,7 +689,7 @@ func (h *TunnelHandler) serveHTTP(stream *h2mux.MuxedStream, req *http.Request) defer response.Body.Close() headers := h2mux.H1ResponseToH2ResponseHeaders(response) - headers = append(headers, h2mux.CreateResponseMetaHeader(h2mux.ResponseSourceOrigin)) + headers = append(headers, h2mux.CreateResponseMetaHeader(h2mux.ResponseMetaHeaderField, h2mux.ResponseSourceOrigin)) err = stream.WriteHeaders(headers) if err != nil { return nil, errors.Wrap(err, "Error writing response header") @@ -725,11 +725,11 @@ func (h *TunnelHandler) isEventStream(response *http.Response) bool { return false } -func (h *TunnelHandler) logError(stream *h2mux.MuxedStream, err error) { +func (h *TunnelHandler) writeErrorResponse(stream *h2mux.MuxedStream, err error) { h.logger.WithError(err).Error("HTTP request error") stream.WriteHeaders([]h2mux.Header{ {Name: ":status", Value: "502"}, - h2mux.CreateResponseMetaHeader(h2mux.ResponseSourceCloudflared), + h2mux.CreateResponseMetaHeader(h2mux.ResponseMetaHeaderField, h2mux.ResponseSourceCloudflared), }) stream.Write([]byte("502 Bad Gateway")) h.metrics.incrementResponses(h.connectionID, "502") diff --git a/originservice/originservice.go b/originservice/originservice.go index 86a532f9..6f363c30 100644 --- a/originservice/originservice.go +++ b/originservice/originservice.go @@ -67,7 +67,7 @@ func (hc *HTTPService) Proxy(stream *h2mux.MuxedStream, req *http.Request) (*htt defer resp.Body.Close() responseHeaders := h1ResponseToH2Response(resp) - responseHeaders = append(responseHeaders, h2mux.CreateResponseMetaHeader(responseSourceOrigin)) + responseHeaders = append(responseHeaders, h2mux.CreateResponseMetaHeader(h2mux.ResponseMetaHeaderField, responseSourceOrigin)) err = stream.WriteHeaders(responseHeaders) if err != nil { return nil, errors.Wrap(err, "error writing response header to HTTP origin") diff --git a/streamhandler/stream_handler.go b/streamhandler/stream_handler.go index aef1609d..66763bcd 100644 --- a/streamhandler/stream_handler.go +++ b/streamhandler/stream_handler.go @@ -185,7 +185,7 @@ func (s *StreamHandler) writeErrorStatus(stream *h2mux.MuxedStream, status *http Name: statusPseudoHeader, Value: status.status, }, - h2mux.CreateResponseMetaHeader(h2mux.ResponseSourceCloudflared), + h2mux.CreateResponseMetaHeader(h2mux.ResponseMetaHeaderField, h2mux.ResponseSourceCloudflared), }) _, _ = stream.Write(status.text) }