Skip to content

Commit

Permalink
Merge pull request moby#9 from crawford/listenbuffer
Browse files Browse the repository at this point in the history
Revert "Return listenbuffer behavior"
  • Loading branch information
crawford committed Nov 25, 2015
2 parents 37fb0ab + 03f5a13 commit 4419fdb
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 21 deletions.
8 changes: 2 additions & 6 deletions api/server/server.go
Expand Up @@ -76,10 +76,11 @@ func (s *Server) Close() {
}

// ServeAPI loops through all initialized servers and spawns goroutine
// with Serve() method for each.
// with Server method for each. It sets CreateMux() as Handler also.
func (s *Server) ServeAPI() error {
var chErrors = make(chan error, len(s.servers))
for _, srv := range s.servers {
srv.srv.Handler = s.CreateMux()
go func(srv *HTTPServer) {
var err error
logrus.Infof("API listen on %s", srv.l.Addr())
Expand Down Expand Up @@ -161,14 +162,9 @@ func (s *Server) makeHTTPHandler(handler httputils.APIFunc) http.HandlerFunc {
}

// InitRouters initializes a list of routers for the server.
// Sets those routers as Handler for each server.
func (s *Server) InitRouters(d *daemon.Daemon) {
s.addRouter(local.NewRouter(d))
s.addRouter(network.NewRouter(d))

for _, srv := range s.servers {
srv.srv.Handler = s.CreateMux()
}
}

// addRouter adds a new router to the server.
Expand Down
28 changes: 13 additions & 15 deletions docker/daemon.go
Expand Up @@ -245,21 +245,6 @@ func (cli *DaemonCli) CmdDaemon(args ...string) error {
logrus.Fatal(err)
}

// The serve API routine never exits unless an error occurs
// We need to start it as a goroutine and wait on it so
// daemon doesn't exit
// All servers must be protected with some mechanism (systemd socket, listenbuffer)
// which prevents real handling of request until routes will be set.
serveAPIWait := make(chan error)
go func() {
if err := api.ServeAPI(); err != nil {
logrus.Errorf("ServeAPI error: %v", err)
serveAPIWait <- err
return
}
serveAPIWait <- nil
}()

if err := migrateKey(); err != nil {
logrus.Fatal(err)
}
Expand Down Expand Up @@ -287,6 +272,19 @@ func (cli *DaemonCli) CmdDaemon(args ...string) error {

api.InitRouters(d)

// The serve API routine never exits unless an error occurs
// We need to start it as a goroutine and wait on it so
// daemon doesn't exit
serveAPIWait := make(chan error)
go func() {
if err := api.ServeAPI(); err != nil {
logrus.Errorf("ServeAPI error: %v", err)
serveAPIWait <- err
return
}
serveAPIWait <- nil
}()

signal.Trap(func() {
api.Close()
<-serveAPIWait
Expand Down

0 comments on commit 4419fdb

Please sign in to comment.