def self.discover_xri(iname)
    endpoints = []
    iname = self.normalize_xri(iname)
    begin
      canonical_id, services = Yadis::XRI::ProxyResolver.new().query(
            iname, OpenIDServiceEndpoint::OPENID_TYPE_URIS)
      if canonical_id.nil?
        raise Yadis::XRDSError.new(sprintf('No CanonicalID found for XRI %s', iname))
      end
      flt = Yadis.make_filter(OpenIDServiceEndpoint)
      services.each { |service_element|
        endpoints += flt.get_service_endpoints(iname, service_element)
      }
    rescue Yadis::XRDSError => why
      Util.log('xrds error on ' + iname + ': ' + why.to_s)
    end
    endpoints.each { |endpoint|
      
      
      endpoint.canonical_id = canonical_id
      endpoint.claimed_id = canonical_id
      endpoint.display_identifier = iname
    }
    
    return [iname, self.get_op_or_user_services(endpoints)]
  end