On Mon, Oct 19, 2009 at 1:18 PM, Pádraic Brady <[email protected]> wrote:

> Not sure if its relevant in terms of the reference hub, but my Subscriber
> has trouble with your feed. What it's doing is accepting your Atom feed URI
> "http://www.tbray.org/ongoing/ongoing.atom"; and then attempting to verify
> the location of the feed, i.e. to rule out redirects etc. To do this, it
> parses the feed for an atom link with a rel attribute of "self". In the case
> of your feed, however, the href attribute seems to be empty - so my
> Subscriber passes back an exception stating that the feed's final location
> could not be verified.
>
> I'd expect the Hub to be making a similar check in verifying the
> subscription details. It's a total stretch, but since this seems to breach
> the Atom specification it's possibly related. See
> http://tools.ietf.org/html/rfc4287#section-4.2.7

I'm one of the designers of Atom, plus I wrote a chapter of 3986, and
I have to confess that my feed contains some stuff that exercises the
corner cases and gives clients trouble; you're not the first to have
problems.  I do claim the feed is valid, and the online validators
agree.  4.2.7.1 makes it clear that the value of l...@href is an IRI
reference.  The actual value, from my feed, is

 <link rel='self' href='' />

i.e. an empty string.  A URI reference that doesn't begin with a
scheme is by definition relative (see RFC3986) and should be
absolutized in the standard way.  Wherever you fetched this from,
tbray.org or (I presume) appspot.com, note that my feed's root element
has this attribute:

      xml:base='http://www.tbray.org/ongoing/ongoing.atom'

Thus, per section 5.1.1 of 3986, you should absolutize the empty
string against the base URI and effectively get
href="http://www.tbray.org/ongoing/ongoing.atom";

In general relative URIs are A Good Thing for publishing systems
because it means you can move whole file trees around without breaking
things; i.e. the staging system where I write my blog isn't on
tbray.org, but everything Just Works because the base is set correctly
and all the URIs are relative.

Pardon my pedantry, but I do think this should work.

 -Tim

Reply via email to