    # File lib/mongrel/configurator.rb, line 132
        def listener(options={},&block)
          raise "Cannot call listener inside another listener block." if (@listener or @listener_name)
          ops = resolve_defaults(options)
          ops[:num_processors] ||= 950
          ops[:throttle] ||= 0
          ops[:timeout] ||= 60

          @listener = Mongrel::HttpServer.new(ops[:host], ops[:port].to_i, ops[:num_processors].to_i, ops[:throttle].to_i, ops[:timeout].to_i)
          @listener_name = "#{ops[:host]}:#{ops[:port]}"
          @listeners[@listener_name] = @listener

          if ops[:user] and ops[:group]
            change_privilege(ops[:user], ops[:group])
          end

          # Does the actual cloaking operation to give the new implicit self.
          if block
            cloaker(&block).bind(self).call
          end

          # all done processing this listener setup, reset implicit variables
          @listener = nil
          @listener_name = nil
        end