code: func (m *Manager) serveListener(ctx context.Context, lCh <-chan net.Listener) {
  	var l net.Listener
  	select {
  	case l = <-lCh:
  	case <-ctx.Done():
  		return
  	}
  	ctx = log.WithLogger(ctx, log.G(ctx).WithFields(
  		logrus.Fields{
  			"proto": l.Addr().Network(),
  			"addr":  l.Addr().String(),
  		}))
  	if _, ok := l.(*net.TCPListener); !ok {
  		log.G(ctx).Info("Listening for local connections")
  		// we need to disallow double closes because UnixListener.Close
  		// can delete unix-socket file of newer listener. grpc calls
  		// Close twice indeed: in Serve and in Stop.
  		m.errServe <- m.localserver.Serve(&closeOnceListener{Listener: l})
  	} else {
  		log.G(ctx).Info("Listening for connections")
  		m.errServe <- m.server.Serve(l)
  	}
  }
docs: // serveListener serves a listener for local and non local connections.