| ... | ... |
@@ -52,9 +52,9 @@ func (v *simpleVersionInfo) Version() string {
|
| 52 | 52 |
// docker, go, git-commit (of the docker) and the host's kernel. |
| 53 | 53 |
// |
| 54 | 54 |
// Such information will be used on call to NewRegistry(). |
| 55 |
-func (srv *Server) versionInfos() []registry.VersionInfo {
|
|
| 55 |
+func (srv *Server) versionInfos() []utils.VersionInfo {
|
|
| 56 | 56 |
v := srv.DockerVersion() |
| 57 |
- ret := make([]registry.VersionInfo, 0, 4) |
|
| 57 |
+ ret := make([]utils.VersionInfo, 0, 4) |
|
| 58 | 58 |
ret = append(ret, &simpleVersionInfo{"docker", v.Version})
|
| 59 | 59 |
|
| 60 | 60 |
if len(v.GoVersion) > 0 {
|
| ... | ... |
@@ -102,7 +102,7 @@ func (srv *Server) ContainerExport(name string, out io.Writer) error {
|
| 102 | 102 |
} |
| 103 | 103 |
|
| 104 | 104 |
func (srv *Server) ImagesSearch(term string) ([]APISearch, error) {
|
| 105 |
- r, err := registry.NewRegistry(srv.runtime.root, nil, srv.versionInfos()...) |
|
| 105 |
+ r, err := registry.NewRegistry(srv.runtime.root, nil, srv.reqFactory) |
|
| 106 | 106 |
if err != nil {
|
| 107 | 107 |
return nil, err |
| 108 | 108 |
} |
| ... | ... |
@@ -559,7 +559,7 @@ func (srv *Server) poolRemove(kind, key string) error {
|
| 559 | 559 |
} |
| 560 | 560 |
|
| 561 | 561 |
func (srv *Server) ImagePull(localName string, tag string, out io.Writer, sf *utils.StreamFormatter, authConfig *auth.AuthConfig) error {
|
| 562 |
- r, err := registry.NewRegistry(srv.runtime.root, authConfig, srv.versionInfos()...) |
|
| 562 |
+ r, err := registry.NewRegistry(srv.runtime.root, authConfig, srv.reqFactory) |
|
| 563 | 563 |
if err != nil {
|
| 564 | 564 |
return err |
| 565 | 565 |
} |
| ... | ... |
@@ -720,7 +720,7 @@ func (srv *Server) ImagePush(localName string, out io.Writer, sf *utils.StreamFo |
| 720 | 720 |
|
| 721 | 721 |
out = utils.NewWriteFlusher(out) |
| 722 | 722 |
img, err := srv.runtime.graph.Get(localName) |
| 723 |
- r, err2 := registry.NewRegistry(srv.runtime.root, authConfig, srv.versionInfos()...) |
|
| 723 |
+ r, err2 := registry.NewRegistry(srv.runtime.root, authConfig, srv.reqFactory) |
|
| 724 | 724 |
if err2 != nil {
|
| 725 | 725 |
return err2 |
| 726 | 726 |
} |
| ... | ... |
@@ -1164,7 +1164,11 @@ func NewServer(flGraphPath string, autoRestart, enableCors bool, dns ListOpts) ( |
| 1164 | 1164 |
pushingPool: make(map[string]struct{}),
|
| 1165 | 1165 |
events: make([]utils.JSONMessage, 0, 64), //only keeps the 64 last events |
| 1166 | 1166 |
listeners: make(map[string]chan utils.JSONMessage), |
| 1167 |
+ reqFactory: nil, |
|
| 1167 | 1168 |
} |
| 1169 |
+ ud := utils.NewHTTPUserAgentDecorator(srv.versionInfos()...) |
|
| 1170 |
+ factory := utils.NewHTTPRequestFactory(ud) |
|
| 1171 |
+ srv.reqFactory = factory |
|
| 1168 | 1172 |
runtime.srv = srv |
| 1169 | 1173 |
return srv, nil |
| 1170 | 1174 |
} |
| ... | ... |
@@ -1189,4 +1193,5 @@ type Server struct {
|
| 1189 | 1189 |
pushingPool map[string]struct{}
|
| 1190 | 1190 |
events []utils.JSONMessage |
| 1191 | 1191 |
listeners map[string]chan utils.JSONMessage |
| 1192 |
+ reqFactory *utils.HTTPRequestFactory |
|
| 1192 | 1193 |
} |
| ... | ... |
@@ -113,6 +113,11 @@ func (self *HTTPRequestFactory) NewRequest(method, urlStr string, body io.Reader |
| 113 | 113 |
if err != nil {
|
| 114 | 114 |
return nil, err |
| 115 | 115 |
} |
| 116 |
+ |
|
| 117 |
+ // By default, a nil factory should work. |
|
| 118 |
+ if self == nil {
|
|
| 119 |
+ return req, nil |
|
| 120 |
+ } |
|
| 116 | 121 |
for _, dec := range self.decorators {
|
| 117 | 122 |
req, err = dec.ChangeRequest(req) |
| 118 | 123 |
if err != nil {
|