Procházet zdrojové kódy

Merge pull request #3277 from jpoimboe/fix-root-symlink

Move root symlink check to engine.New
Victor Vieux před 11 roky
rodič
revize
248eadd341
2 změnil soubory, kde provedl 16 přidání a 14 odebrání
  1. 0 14
      docker/docker.go
  2. 16 0
      engine/engine.go

+ 0 - 14
docker/docker.go

@@ -9,7 +9,6 @@ import (
 	"github.com/dotcloud/docker/utils"
 	"log"
 	"os"
-	"path/filepath"
 	"strings"
 )
 
@@ -71,19 +70,6 @@ func main() {
 			return
 		}
 
-		// Docker makes some assumptions about the "absoluteness" of flRoot
-		// ... so let's make sure it has no symlinks
-		if p, err := filepath.Abs(*flRoot); err != nil {
-			log.Fatalf("Unable to get absolute root (%s): %s", flRoot, err)
-		} else {
-			*flRoot = p
-		}
-		if p, err := filepath.EvalSymlinks(*flRoot); err != nil {
-			log.Fatalf("Unable to canonicalize root (%s): %s", flRoot, err)
-		} else {
-			*flRoot = p
-		}
-
 		eng, err := engine.New(*flRoot)
 		if err != nil {
 			log.Fatal(err)

+ 16 - 0
engine/engine.go

@@ -6,6 +6,7 @@ import (
 	"io"
 	"log"
 	"os"
+	"path/filepath"
 	"runtime"
 	"strings"
 )
@@ -79,9 +80,24 @@ func New(root string) (*Engine, error) {
 			}
 		}
 	}
+
 	if err := os.MkdirAll(root, 0700); err != nil && !os.IsExist(err) {
 		return nil, err
 	}
+
+	// Docker makes some assumptions about the "absoluteness" of root
+	// ... so let's make sure it has no symlinks
+	if p, err := filepath.Abs(root); err != nil {
+		log.Fatalf("Unable to get absolute root (%s): %s", root, err)
+	} else {
+		root = p
+	}
+	if p, err := filepath.EvalSymlinks(root); err != nil {
+		log.Fatalf("Unable to canonicalize root (%s): %s", root, err)
+	} else {
+		root = p
+	}
+
 	eng := &Engine{
 		root:     root,
 		handlers: make(map[string]Handler),