Correctly assemble URL during blob upload

When adding parameters to a location header, the client must not destroy
parameters already present. This change ensures that parameters are added,
rather than replaced when assembling the url.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day 2015-01-06 16:43:17 -08:00
parent 5f863238c0
commit 83977857f8

View file

@ -6,7 +6,6 @@ import (
"fmt"
"io"
"net/http"
"net/url"
"regexp"
"strconv"
@ -398,9 +397,9 @@ func (r *clientImpl) UploadBlob(location string, blob io.ReadCloser, length int,
return err
}
queryValues := url.Values{}
queryValues.Set("digest", dgst.String())
putRequest.URL.RawQuery = queryValues.Encode()
values := putRequest.URL.Query()
values.Set("digest", dgst.String())
putRequest.URL.RawQuery = values.Encode()
putRequest.Header.Set("Content-Type", "application/octet-stream")
putRequest.Header.Set("Content-Length", fmt.Sprint(length))
@ -486,9 +485,9 @@ func (r *clientImpl) FinishChunkedBlobUpload(location string, length int, dgst d
return err
}
queryValues := new(url.Values)
queryValues.Set("digest", dgst.String())
putRequest.URL.RawQuery = queryValues.Encode()
values := putRequest.URL.Query()
values.Set("digest", dgst.String())
putRequest.URL.RawQuery = values.Encode()
putRequest.Header.Set("Content-Type", "application/octet-stream")
putRequest.Header.Set("Content-Length", "0")