Просмотр исходного кода

engine: catchall handler is shadowed by specific handlers

This allows using `Engine.Register` and `Engine.RegisterCatchall` on the
same engine without the catchall hiding all other handlers.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
Solomon Hykes 11 лет назад
Родитель
Сommit
de75af9fe2
1 измененных файлов с 5 добавлено и 6 удалено
  1. 5 6
      engine/engine.go

+ 5 - 6
engine/engine.go

@@ -118,13 +118,12 @@ func (eng *Engine) Job(name string, args ...string) *Job {
 	if eng.Logging {
 		job.Stderr.Add(utils.NopWriteCloser(eng.Stderr))
 	}
-	if eng.catchall != nil {
+
+	// Catchall is shadowed by specific Register.
+	if handler, exists := eng.handlers[name]; exists {
+		job.handler = handler
+	} else if eng.catchall != nil {
 		job.handler = eng.catchall
-	} else {
-		handler, exists := eng.handlers[name]
-		if exists {
-			job.handler = handler
-		}
 	}
 	return job
 }