Merge pull request #1661 from restic/fix-rest-content-length

rest: Really set Content-Length HTTP header
This commit is contained in:
Alexander Neumann 2018-03-10 20:34:30 +01:00
commit e77d8c64a7

View file

@ -9,7 +9,6 @@ import (
"net/http" "net/http"
"net/url" "net/url"
"path" "path"
"strconv"
"strings" "strings"
"golang.org/x/net/context/ctxhttp" "golang.org/x/net/context/ctxhttp"
@ -119,10 +118,13 @@ func (b *restBackend) Save(ctx context.Context, h restic.Handle, rd restic.Rewin
if err != nil { if err != nil {
return errors.Wrap(err, "NewRequest") return errors.Wrap(err, "NewRequest")
} }
req.Header.Set("Content-Length", strconv.FormatInt(rd.Length(), 10))
req.Header.Set("Content-Type", "application/octet-stream") req.Header.Set("Content-Type", "application/octet-stream")
req.Header.Set("Accept", contentTypeV2) req.Header.Set("Accept", contentTypeV2)
// explicitly set the content length, this prevents chunked encoding and
// let's the server know what's coming.
req.ContentLength = rd.Length()
b.sem.GetToken() b.sem.GetToken()
resp, err := ctxhttp.Do(ctx, b.client, req) resp, err := ctxhttp.Do(ctx, b.client, req)
b.sem.ReleaseToken() b.sem.ReleaseToken()