From f43759723793c7a49e78514dbddb670047fdbcdc Mon Sep 17 00:00:00 2001 From: Spencer Peterson Date: Tue, 27 Aug 2019 14:28:42 -0700 Subject: [PATCH] HTTP Transport write header before body Fixes #176 Signed-off-by: Spencer Peterson --- pkg/cloudevents/transport/http/transport.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/cloudevents/transport/http/transport.go b/pkg/cloudevents/transport/http/transport.go index 28e3e80f3..bc7045329 100644 --- a/pkg/cloudevents/transport/http/transport.go +++ b/pkg/cloudevents/transport/http/transport.go @@ -575,6 +575,13 @@ func (t *Transport) ServeHTTP(w http.ResponseWriter, req *http.Request) { if len(resp.Message.Header) > 0 { copyHeaders(resp.Message.Header, w.Header()) } + + status := http.StatusAccepted + if resp.StatusCode >= 200 && resp.StatusCode < 600 { + status = resp.StatusCode + } + w.WriteHeader(status) + w.Header().Add("Content-Length", strconv.Itoa(len(resp.Message.Body))) if len(resp.Message.Body) > 0 { if _, err := w.Write(resp.Message.Body); err != nil { @@ -582,11 +589,6 @@ func (t *Transport) ServeHTTP(w http.ResponseWriter, req *http.Request) { return } } - status := http.StatusAccepted - if resp.StatusCode >= 200 && resp.StatusCode < 600 { - status = resp.StatusCode - } - w.WriteHeader(status) r.OK() return