Skip to content

Commit 9f7f8bf

Browse files
committed
cmd/tsdbrelay: fix http: proxy error: EOF due to mixing Content-Encoding headers
1 parent c1d4c83 commit 9f7f8bf

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

cmd/tsdbrelay/main.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ func (rw *relayWriter) WriteHeader(code int) {
213213

214214
var (
215215
relayHeader = "X-Relayed-From"
216+
encHeader = "Content-Encoding"
217+
typeHeader = "Content-Type"
216218
myHost string
217219
)
218220

@@ -260,8 +262,12 @@ func (rp *relayProxy) relayPut(responseWriter http.ResponseWriter, r *http.Reque
260262
collect.Add("additional.puts.error", tags, 1)
261263
continue
262264
}
263-
req.Header.Set("Content-Type", "application/json")
264-
req.Header.Set("Content-Encoding", "gzip")
265+
if contenttype := r.Header.Get(typeHeader); contenttype != "" {
266+
req.Header.Set(typeHeader, contenttype)
267+
}
268+
if encoding := r.Header.Get(encHeader); encoding != "" {
269+
req.Header.Set(encHeader, encoding)
270+
}
265271
req.Header.Add(relayHeader, myHost)
266272
resp, err := http.DefaultClient.Do(req)
267273
if err != nil {
@@ -320,8 +326,8 @@ func (rp *relayProxy) denormalize(body io.Reader) {
320326
verbose("error posting denormalized data points: %v", err)
321327
return
322328
}
323-
req.Header.Set("Content-Type", "application/json")
324-
req.Header.Set("Content-Encoding", "gzip")
329+
req.Header.Set(typeHeader, "application/json")
330+
req.Header.Set(encHeader, "gzip")
325331

326332
responseWriter := httptest.NewRecorder()
327333
rp.relayPut(responseWriter, req, false)
@@ -354,7 +360,12 @@ func (rp *relayProxy) relayMetadata(responseWriter http.ResponseWriter, r *http.
354360
verbose("metadata relayPutUrls error %v", err)
355361
continue
356362
}
357-
req.Header.Set("Content-Type", "application/json")
363+
if contenttype := r.Header.Get(typeHeader); contenttype != "" {
364+
req.Header.Set(typeHeader, contenttype)
365+
}
366+
if encoding := r.Header.Get(encHeader); encoding != "" {
367+
req.Header.Set(encHeader, encoding)
368+
}
358369
req.Header.Add(relayHeader, myHost)
359370
resp, err := http.DefaultClient.Do(req)
360371
if err != nil {

0 commit comments

Comments
 (0)