start_control

in lib/puma/runner.rb [48:89]


    def start_control
      str = @options[:control_url]
      return unless str

      require 'puma/app/status'

      uri = URI.parse str

      if token = @options[:control_auth_token]
        token = nil if token.empty? || token == 'none'
      end

      app = Puma::App::Status.new @launcher, token

      control = Puma::Server.new app, @launcher.events
      control.min_threads = 0
      control.max_threads = 1

      case uri.scheme
      when "ssl"
          log "* Starting control server on #{str}"
          params = Util.parse_query uri.query
          ctx = MiniSSL::ContextBuilder.new(params, @events).context

          control.add_ssl_listener uri.host, uri.port, ctx
      when "tcp"
        log "* Starting control server on #{str}"
        control.add_tcp_listener uri.host, uri.port
      when "unix"
        log "* Starting control server on #{str}"
        path = "#{uri.host}#{uri.path}"
        mask = @options[:control_url_umask]

        control.add_unix_listener path, mask
      else
        error "Invalid control URI: #{str}"
      end

      control.run
      @control = control
    end