server_windows.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // +build windows
  2. package server
  3. import (
  4. "errors"
  5. "net"
  6. "net/http"
  7. "github.com/Sirupsen/logrus"
  8. "github.com/docker/docker/daemon"
  9. )
  10. // NewServer sets up the required Server and does protocol specific checking.
  11. func (s *Server) newServer(proto, addr string) (Server, error) {
  12. var (
  13. err error
  14. l net.Listener
  15. )
  16. switch proto {
  17. case "tcp":
  18. if !s.cfg.TlsVerify {
  19. logrus.Warn("/!\\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\")
  20. }
  21. if l, err = NewTcpSocket(addr, tlsConfigFromServerConfig(s.cfg)); err != nil {
  22. return nil, err
  23. }
  24. if err := allocateDaemonPort(addr); err != nil {
  25. return nil, err
  26. }
  27. default:
  28. return nil, errors.New("Invalid protocol format. Windows only supports tcp.")
  29. }
  30. return &HttpServer{
  31. &http.Server{
  32. Addr: addr,
  33. Handler: s.router,
  34. },
  35. l,
  36. }, nil
  37. }
  38. func (s *Server) AcceptConnections(d *daemon.Daemon) {
  39. s.daemon = d
  40. // close the lock so the listeners start accepting connections
  41. select {
  42. case <-s.start:
  43. default:
  44. close(s.start)
  45. }
  46. }