Selaa lähdekoodia

Merge pull request #10971 from Microsoft/10662-api_server_factor_out_windows

api\server: Factored out UnixHttp on Windows, supported on Linux only.
Jessie Frazelle 10 vuotta sitten
vanhempi
commit
c5ecdfd878
3 muutettua tiedostoa jossa 72 lisäystä ja 41 poistoa
  1. 0 41
      api/server/server.go
  2. 52 0
      api/server/server_linux.go
  3. 20 0
      api/server/server_windows.go

+ 0 - 41
api/server/server.go

@@ -16,7 +16,6 @@ import (
 	"os"
 	"os"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
-	"syscall"
 
 
 	"crypto/tls"
 	"crypto/tls"
 	"crypto/x509"
 	"crypto/x509"
@@ -1513,31 +1512,6 @@ func setSocketGroup(addr, group string) error {
 	return nil
 	return nil
 }
 }
 
 
-func setupUnixHttp(addr string, job *engine.Job) (*HttpServer, error) {
-	r := createRouter(job.Eng, job.GetenvBool("Logging"), job.GetenvBool("EnableCors"), job.Getenv("Version"))
-
-	if err := syscall.Unlink(addr); err != nil && !os.IsNotExist(err) {
-		return nil, err
-	}
-	mask := syscall.Umask(0777)
-	defer syscall.Umask(mask)
-
-	l, err := newListener("unix", addr, job.GetenvBool("BufferRequests"))
-	if err != nil {
-		return nil, err
-	}
-
-	if err := setSocketGroup(addr, job.Getenv("SocketGroup")); err != nil {
-		return nil, err
-	}
-
-	if err := os.Chmod(addr, 0660); err != nil {
-		return nil, err
-	}
-
-	return &HttpServer{&http.Server{Addr: addr, Handler: r}, l}, nil
-}
-
 func allocateDaemonPort(addr string) error {
 func allocateDaemonPort(addr string) error {
 	host, port, err := net.SplitHostPort(addr)
 	host, port, err := net.SplitHostPort(addr)
 	if err != nil {
 	if err != nil {
@@ -1593,21 +1567,6 @@ func setupTcpHttp(addr string, job *engine.Job) (*HttpServer, error) {
 	return &HttpServer{&http.Server{Addr: addr, Handler: r}, l}, nil
 	return &HttpServer{&http.Server{Addr: addr, Handler: r}, l}, nil
 }
 }
 
 
-// NewServer sets up the required Server and does protocol specific checking.
-func NewServer(proto, addr string, job *engine.Job) (Server, error) {
-	// Basic error and sanity checking
-	switch proto {
-	case "fd":
-		return nil, serveFd(addr, job)
-	case "tcp":
-		return setupTcpHttp(addr, job)
-	case "unix":
-		return setupUnixHttp(addr, job)
-	default:
-		return nil, fmt.Errorf("Invalid protocol format.")
-	}
-}
-
 type Server interface {
 type Server interface {
 	Serve() error
 	Serve() error
 	Close() error
 	Close() error

+ 52 - 0
api/server/server_linux.go

@@ -0,0 +1,52 @@
+// +build linux
+
+package server
+
+import (
+	"fmt"
+	"net/http"
+	"os"
+	"syscall"
+
+	"github.com/docker/docker/engine"
+)
+
+// NewServer sets up the required Server and does protocol specific checking.
+func NewServer(proto, addr string, job *engine.Job) (Server, error) {
+	// Basic error and sanity checking
+	switch proto {
+	case "fd":
+		return nil, serveFd(addr, job)
+	case "tcp":
+		return setupTcpHttp(addr, job)
+	case "unix":
+		return setupUnixHttp(addr, job)
+	default:
+		return nil, fmt.Errorf("Invalid protocol format.")
+	}
+}
+
+func setupUnixHttp(addr string, job *engine.Job) (*HttpServer, error) {
+	r := createRouter(job.Eng, job.GetenvBool("Logging"), job.GetenvBool("EnableCors"), job.Getenv("Version"))
+
+	if err := syscall.Unlink(addr); err != nil && !os.IsNotExist(err) {
+		return nil, err
+	}
+	mask := syscall.Umask(0777)
+	defer syscall.Umask(mask)
+
+	l, err := newListener("unix", addr, job.GetenvBool("BufferRequests"))
+	if err != nil {
+		return nil, err
+	}
+
+	if err := setSocketGroup(addr, job.Getenv("SocketGroup")); err != nil {
+		return nil, err
+	}
+
+	if err := os.Chmod(addr, 0660); err != nil {
+		return nil, err
+	}
+
+	return &HttpServer{&http.Server{Addr: addr, Handler: r}, l}, nil
+}

+ 20 - 0
api/server/server_windows.go

@@ -0,0 +1,20 @@
+// +build windows
+
+package server
+
+import (
+	"fmt"
+
+	"github.com/docker/docker/engine"
+)
+
+// NewServer sets up the required Server and does protocol specific checking.
+func NewServer(proto, addr string, job *engine.Job) (Server, error) {
+	// Basic error and sanity checking
+	switch proto {
+	case "tcp":
+		return setupTcpHttp(addr, job)
+	default:
+		return nil, errors.New("Invalid protocol format. Windows only supports tcp.")
+	}
+}