Skip to content

Commit cc727c5

Browse files
Added basic support for trailer headers
1 parent b0fb7fb commit cc727c5

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

gohpts.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,14 @@ func (p *proxyApp) handleForward(w http.ResponseWriter, r *http.Request) {
199199
}
200200
}()
201201
}
202+
announcedTrailers := len(resp.Trailer)
203+
if announcedTrailers > 0 {
204+
trailerKeys := make([]string, 0, announcedTrailers)
205+
for k := range resp.Trailer {
206+
trailerKeys = append(trailerKeys, k)
207+
}
208+
w.Header().Add("Trailer", strings.Join(trailerKeys, ", "))
209+
}
202210
delConnectionHeaders(resp.Header)
203211
delHopHeaders(resp.Header)
204212
copyHeader(w.Header(), resp.Header)
@@ -219,6 +227,15 @@ func (p *proxyApp) handleForward(w http.ResponseWriter, r *http.Request) {
219227
written = fmt.Sprintf("%s - chunked", written)
220228
}
221229
p.logger.Debug().Msgf("%s - %s - %s - %d - %s", r.Proto, r.Method, r.Host, resp.StatusCode, written)
230+
if len(resp.Trailer) == announcedTrailers {
231+
copyHeader(w.Header(), resp.Trailer)
232+
}
233+
for key, values := range resp.Trailer {
234+
key = http.TrailerPrefix + key
235+
for _, v := range values {
236+
w.Header().Add(key, v)
237+
}
238+
}
222239
done <- struct{}{}
223240
close(done)
224241
}

version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package gohpts
22

3-
const Version string = "gohpts v1.3.1"
3+
const Version string = "gohpts v1.3.2"

0 commit comments

Comments
 (0)