Merge pull request #25064 from Clarifai/httpheaders-querystring

Automatic merge from submit-queue

Preserve query strings in HTTP probes instead of escaping them

Fixes a problem reported on Slack by devth.

```release-note
* Allow the use of query strings and URI fragments in HTTP probes
```

This might also preserve fragments, for those crazy enough to pass them.

I am using url.Parse() on the path in order to get path/query/fragment
and also deliberately avoiding the addition of more fields to the API.
This commit is contained in:
k8s-merge-robot 2016-06-09 01:15:47 -07:00
commit a5cd171c2f
2 changed files with 11 additions and 4 deletions

View File

@ -208,11 +208,16 @@ func findPortByName(container api.Container, portName string) (int, error) {
// formatURL formats a URL from args. For testability.
func formatURL(scheme string, host string, port int, path string) *url.URL {
return &url.URL{
Scheme: scheme,
Host: net.JoinHostPort(host, strconv.Itoa(port)),
Path: path,
u, err := url.Parse(path)
// Something is busted with the path, but it's too late to reject it. Pass it along as is.
if err != nil {
u = &url.URL{
Path: path,
}
}
u.Scheme = scheme
u.Host = net.JoinHostPort(host, strconv.Itoa(port))
return u
}
type execInContainer struct {

View File

@ -41,6 +41,8 @@ func TestFormatURL(t *testing.T) {
}{
{"http", "localhost", 93, "", "http://localhost:93"},
{"https", "localhost", 93, "/path", "https://localhost:93/path"},
{"http", "localhost", 93, "?foo", "http://localhost:93?foo"},
{"https", "localhost", 93, "/path?bar", "https://localhost:93/path?bar"},
}
for _, test := range testCases {
url := formatURL(test.scheme, test.host, test.port, test.path)