From f3736265fdddef9e9a9ab588906eeb7abe8a0cf6 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Thu, 1 May 2014 23:07:11 +0000 Subject: [PATCH 1/2] make listen buffer optional Docker-DCO-1.1-Signed-off-by: Victor Vieux (github: vieux) --- api/server/server.go | 7 ++++++- docker/docker.go | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/api/server/server.go b/api/server/server.go index 3c93a3478..ed1d43406 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -1193,6 +1193,7 @@ func changeGroup(addr string, nameOrGid string) error { // ListenAndServe sets up the required http.Server and gets it listening for // each addr passed in and does protocol specific checking. func ListenAndServe(proto, addr string, job *engine.Job) error { + var l net.Listener r, err := createRouter(job.Eng, job.GetenvBool("Logging"), job.GetenvBool("EnableCors"), job.Getenv("Version")) if err != nil { return err @@ -1208,7 +1209,11 @@ func ListenAndServe(proto, addr string, job *engine.Job) error { } } - l, err := listenbuffer.NewListenBuffer(proto, addr, activationLock) + if job.GetenvBool("BufferRequests") { + l, err = listenbuffer.NewListenBuffer(proto, addr, activationLock) + } else { + l, err = net.Listen(proto, addr) + } if err != nil { return err } diff --git a/docker/docker.go b/docker/docker.go index 60f34a1f1..1683d7a0e 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -185,6 +185,7 @@ func main() { job.Setenv("TlsCa", *flCa) job.Setenv("TlsCert", *flCert) job.Setenv("TlsKey", *flKey) + job.SetenvBool("BuffferRequests", true) if err := job.Run(); err != nil { log.Fatal(err) } From 937f8f2d813f58480e4bb2c0060353be31b04e10 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Sat, 3 May 2014 00:11:20 +0000 Subject: [PATCH 2/2] move acceptconnections as builtin Docker-DCO-1.1-Signed-off-by: Victor Vieux (github: vieux) --- api/server/server.go | 8 +++----- builtins/builtins.go | 5 ++++- docker/docker.go | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/api/server/server.go b/api/server/server.go index ed1d43406..8fe518f7c 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -1285,10 +1285,6 @@ func ServeApi(job *engine.Job) engine.Status { ) activationLock = make(chan struct{}) - if err := job.Eng.Register("acceptconnections", AcceptConnections); err != nil { - return job.Error(err) - } - for _, protoAddr := range protoAddrs { protoAddrParts := strings.SplitN(protoAddr, "://", 2) if len(protoAddrParts) != 2 { @@ -1315,7 +1311,9 @@ func AcceptConnections(job *engine.Job) engine.Status { go systemd.SdNotify("READY=1") // close the lock so the listeners start accepting connections - close(activationLock) + if activationLock != nil { + close(activationLock) + } return engine.StatusOK } diff --git a/builtins/builtins.go b/builtins/builtins.go index 572e16252..3e0041c9d 100644 --- a/builtins/builtins.go +++ b/builtins/builtins.go @@ -28,7 +28,10 @@ func Register(eng *engine.Engine) error { // remote: a RESTful api for cross-docker communication func remote(eng *engine.Engine) error { - return eng.Register("serveapi", apiserver.ServeApi) + if err := eng.Register("serveapi", apiserver.ServeApi); err != nil { + return err + } + return eng.Register("acceptconnections", apiserver.AcceptConnections) } // daemon: a default execution and storage backend for Docker on Linux, diff --git a/docker/docker.go b/docker/docker.go index 1683d7a0e..ab485d0b6 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -185,7 +185,7 @@ func main() { job.Setenv("TlsCa", *flCa) job.Setenv("TlsCert", *flCert) job.Setenv("TlsKey", *flKey) - job.SetenvBool("BuffferRequests", true) + job.SetenvBool("BufferRequests", true) if err := job.Run(); err != nil { log.Fatal(err) }