diff --git a/api/http/proxy/response.go b/api/http/proxy/response.go index ece319672..4208f438c 100644 --- a/api/http/proxy/response.go +++ b/api/http/proxy/response.go @@ -85,6 +85,11 @@ func rewriteResponse(response *http.Response, newResponseData interface{}, statu response.StatusCode = statusCode response.Body = body response.ContentLength = int64(len(jsonData)) + + if response.Header == nil { + response.Header = make(http.Header) + } response.Header.Set("Content-Length", strconv.Itoa(len(jsonData))) + return nil } diff --git a/api/http/proxy/transport.go b/api/http/proxy/transport.go index 29c1d6c72..76c4f43f7 100644 --- a/api/http/proxy/transport.go +++ b/api/http/proxy/transport.go @@ -59,6 +59,8 @@ func (p *proxyTransport) proxyDockerRequest(request *http.Request) (*http.Respon return p.proxyServiceRequest(request) } else if strings.HasPrefix(path, "/volumes") { return p.proxyVolumeRequest(request) + } else if strings.HasPrefix(path, "/swarm") { + return p.proxySwarmRequest(request) } return p.executeDockerRequest(request) @@ -143,6 +145,10 @@ func (p *proxyTransport) proxyVolumeRequest(request *http.Request) (*http.Respon } } +func (p *proxyTransport) proxySwarmRequest(request *http.Request) (*http.Response, error) { + return p.administratorOperation(request) +} + // restrictedOperation ensures that the current user has the required authorizations // before executing the original request. func (p *proxyTransport) restrictedOperation(request *http.Request, resourceID string) (*http.Response, error) {