From f37ce76bf68d4935accd1018c904e80e42066f9f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 1 May 2014 16:08:39 -0700 Subject: [PATCH] api/server: better error checking to avoid unnecessary panics Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- api/server/server.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/api/server/server.go b/api/server/server.go index 5db9df190..0f887a8ae 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -1267,6 +1267,9 @@ func ListenAndServe(proto, addr string, job *engine.Job) error { // ServeApi loops through all of the protocols sent in to docker and spawns // off a go routine to setup a serving http.Server for each. func ServeApi(job *engine.Job) engine.Status { + if len(job.Args) == 0 { + return job.Errorf("usage: %s PROTO://ADDR [PROTO://ADDR ...]", job.Name) + } var ( protoAddrs = job.Args chErrors = make(chan error, len(protoAddrs)) @@ -1279,6 +1282,9 @@ func ServeApi(job *engine.Job) engine.Status { for _, protoAddr := range protoAddrs { protoAddrParts := strings.SplitN(protoAddr, "://", 2) + if len(protoAddrParts) != 2 { + return job.Errorf("usage: %s PROTO://ADDR [PROTO://ADDR ...]", job.Name) + } go func() { log.Printf("Listening for HTTP on %s (%s)\n", protoAddrParts[0], protoAddrParts[1]) chErrors <- ListenAndServe(protoAddrParts[0], protoAddrParts[1], job)