ソースを参照

rewrite protocol check with switch-case in Server.Daemon

Yang Bai 11 年 前
コミット
7848007c3a
1 ファイル変更10 行追加8 行削除
  1. 10 8
      server.go

+ 10 - 8
server.go

@@ -6,10 +6,10 @@ import (
 	"errors"
 	"fmt"
 	"github.com/dotcloud/docker/auth"
+	"github.com/dotcloud/docker/engine"
 	"github.com/dotcloud/docker/gograph"
 	"github.com/dotcloud/docker/registry"
 	"github.com/dotcloud/docker/utils"
-	"github.com/dotcloud/docker/engine"
 	"io"
 	"io/ioutil"
 	"log"
@@ -17,14 +17,14 @@ import (
 	"net/url"
 	"os"
 	"os/exec"
+	"os/signal"
 	"path"
 	"path/filepath"
 	"runtime"
 	"strings"
 	"sync"
-	"time"
 	"syscall"
-	"os/signal"
+	"time"
 )
 
 func (srv *Server) Close() error {
@@ -70,13 +70,16 @@ func (srv *Server) Daemon() error {
 	chErrors := make(chan error, len(protoAddrs))
 	for _, protoAddr := range protoAddrs {
 		protoAddrParts := strings.SplitN(protoAddr, "://", 2)
-		if protoAddrParts[0] == "unix" {
-			syscall.Unlink(protoAddrParts[1])
-		} else if protoAddrParts[0] == "tcp" {
+		switch protoAddrParts[0] {
+		case "unix":
+			if err := syscall.Unlink(protoAddrParts[1]); err != nil && !os.IsNotExist(err) {
+				log.Fatal(err)
+			}
+		case "tcp":
 			if !strings.HasPrefix(protoAddrParts[1], "127.0.0.1") {
 				log.Println("/!\\ DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\")
 			}
-		} else {
+		default:
 			return fmt.Errorf("Invalid protocol format.")
 		}
 		go func() {
@@ -92,7 +95,6 @@ func (srv *Server) Daemon() error {
 	return nil
 }
 
-
 func (srv *Server) DockerVersion() APIVersion {
 	return APIVersion{
 		Version:   VERSION,