Class: Puppet::Network::HTTP::WEBrick

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/patch/webrick.rb

Instance Method Summary collapse

Instance Method Details

#create_server(address, port) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/puppet/patch/webrick.rb', line 27

def create_server(address, port)
  arguments = {:BindAddress => address, :Port => port, :DoNotReverseLookup => true}
  arguments.merge!(setup_logger)
  # arguments.merge!(setup_ssl)

  BasicSocket.do_not_reverse_lookup = true

  server = WEBrick::HTTPServer.new(arguments)
  # server.ssl_context.ciphers = CIPHERS
  server
end

#listen(address, port) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/puppet/patch/webrick.rb', line 5

def listen(address, port)
  @server = create_server(address, port)

  # @server.listeners.each { |l| l.start_immediately = false }

  @server.mount('/', Puppet::Network::HTTP::WEBrickREST)

  raise "WEBrick server is already listening" if @listening
  @listening = true
  @thread = Thread.new do
    @server.start do |sock|
      timeout = 10.0
      if ! IO.select([sock],nil,nil,timeout)
        raise "Client did not send data within %.1f seconds of connecting" % timeout
      end
      # sock.accept
      @server.run(sock)
    end
  end
  sleep 0.1 until @server.status == :Running
end