# File lib/net/ping/http.rb, line 56
    def ping(host = @host)
      super(host)
      bool = false
      uri = URI.parse(host)

      start_time = Time.now

      begin
        response = nil
        uri_path = uri.path.empty? ? '/' : uri.path
        headers = { }
        headers["User-Agent"] = user_agent unless user_agent.nil?
        Timeout.timeout(@timeout) do
          http = Net::HTTP.new(uri.host, uri.port)
          http.use_ssl = (uri.scheme == 'https')
          request = Net::HTTP::Get.new(uri_path)
          response = http.start{ |h| h.request(request) }
        end
      rescue Exception => err
        @exception = err.message
      else
        if response.is_a?(Net::HTTPSuccess)
          bool = true
        else
          if @follow_redirect
            @warning = response.message
            rlimit = 0

            # Any response code in the 300 range is a redirect
            while response.code.to_i >= 300 && response.code.to_i < 400
              if rlimit >= redirect_limit
                @exception = "Redirect limit exceeded"
                break
              end
              redirect = URI.parse(response['location'])
              redirect = uri + redirect if redirect.relative?
              response = Net::HTTP.get_response(redirect.host, redirect.path, @port)
              rlimit += 1
            end

            if response.is_a?(Net::HTTPSuccess)
              bool = true
            else
              @warning = nil
              @exception ||= response.message
            end
          else
            @exception = response.message
          end
        end
      end

      # There is no duration if the ping failed
      @duration = Time.now - start_time if bool

      bool
    end