@@ -100,37 +100,15 @@ func (h Handler) Serve(l net.Listener) io.Closer {
100100// of docker daemon must be provided. To get default directory, use
101101// WindowsDefaultDaemonRootDir() function. On Unix, this parameter is ignored.
102102func (h Handler ) ServeTCP (pluginName , addr , daemonDir string , tlsConfig * tls.Config ) (io.Closer , error ) {
103- l , spec , err := newTCPListener (addr , pluginName , daemonDir , tlsConfig )
104- if err != nil {
105- return nil , err
106- }
107-
108- closer := h .Serve (l )
109- deleter := specDeleter {
110- serverCloser : closer ,
111- spec : spec ,
112- }
113-
114- return deleter , nil
103+ return h .serveListener (newTCPListener (addr , pluginName , daemonDir , tlsConfig ))
115104}
116105
117106// ServeUnix sets up the Handler to asynchronously listen for requests to a unix socket.
118107// It also creates the socket file in the right directory for docker to read.
119108// Calling the Close method of the returned Closer will delete the spec file, gracefully shut down the
120109// server answering requests and return the resulting error (see http.Server#Serve(net.Listener)).
121110func (h Handler ) ServeUnix (addr string , gid int ) (io.Closer , error ) {
122- l , spec , err := newUnixListener (addr , gid )
123- if err != nil {
124- return nil , err
125- }
126-
127- closer := h .Serve (l )
128- deleter := specDeleter {
129- serverCloser : closer ,
130- spec : spec ,
131- }
132-
133- return deleter , nil
111+ return h .serveListener (newUnixListener (addr , gid ))
134112}
135113
136114// ServeWindows sets up the Handler to asynchronously listen for requests to a Windows named pipe.
@@ -142,7 +120,12 @@ func (h Handler) ServeUnix(addr string, gid int) (io.Closer, error) {
142120// of docker daemon must be provided. To get default directory, use
143121// WindowsDefaultDaemonRootDir() function. On Unix, this parameter is ignored.
144122func (h Handler ) ServeWindows (addr , pluginName , daemonDir string , pipeConfig * WindowsPipeConfig ) (io.Closer , error ) {
145- l , spec , err := newWindowsListener (addr , pluginName , daemonDir , pipeConfig )
123+ return h .serveListener (newWindowsListener (addr , pluginName , daemonDir , pipeConfig ))
124+ }
125+
126+ // Accepts the return values of new{TCP,Unix,Windows}Listener(...) and serves requests as described in the
127+ // functions documentation.
128+ func (h Handler ) serveListener (l net.Listener , spec string , err error ) (io.Closer , error ) {
146129 if err != nil {
147130 return nil , err
148131 }
0 commit comments