This post details how and why the trackback bug described in my previous post ("Trackback bug - Trackback fails when post is not published to home page") occurs.
If you look at the structure of
it is apparent that the names of the subtables are urls. The tables listed under
weblogData.posts.[postNum].trackback.inbound.urls should be the same way - the
names of the subtables should be urls as well.
The error message that is being received:
Can't create item "radiocommentsManilaWebsite.#newsSite.radioHosting.trackback.users. 0127252.114.trackback.inbound.urls." because "" is an illegal name.
...would seem to indicate that a new subtable under inbound.urls is trying to be created with a name (url) of "" (null or empty string).
An outbound trackback ping requires 5 parameters - the trackback url to be pinged, the title of the post originating the trackback ping, the url of the post originating the trackback ping (permalink), an excerpt of text from the originating post, and the title of the weblog.
When a post is published with a link that can be pinged by Radio's trackback, and this post is not published to the "Home Page" (main weblog), Radio is not determining the permalink url correctly - it is sending an empty permalink url string. When such a trackback ping is sent to a Radio weblog, Radio's trackback servers can't create an inbound.urls table entry on Radio's trackback servers with an empty name (url). Apparently, the trackback table structure on Radio's trackback servers is similar to the table structure on a local Radio installation. The only thing Radio's trackback servers can do is report the error shown above.
This is how the error occurs:
1. When a post is published, processing of trackbacks is started with a call to
2. Within the above callback, a call is made to
3. Within the above thread script, a call is made to
system.verbs.builtins.radio.trackback.ping for each url that Radio has determined
it can send a trackback ping to.
4. The overall purpose of
radio.trackback.ping is to get the 5 parameters
necessary to perform an outbound trackback ping and pass them to
system.verbs.apps.trackback.ping (the code which actually performs the trackback ping).
In the code for
radio.trackback.ping, the permalink url parameter is initialized:
local (url = "")
radio.weblog.getUrlForPost (adrpost, @url) is called to get the permalink
url of the post.
5. This is the initial line of code from
on getUrlForPost (adrpost, adrurl, catname="", adrdata=radio.weblog.init ())
radio.weblog.getUrlForPost takes a category parameter (catname), and if
one is not supplied, the default value of "" is used.
radio.trackback.ping does not
pass a category parameter, so the value of "" is always used for catname when this macro
is called from
6. Near the beginning of
radio.weblog.getUrlForPost, this code is encountered:
if catname == "" //get the weblog archive relative folder path if adrpost^.flNotOnHomePage //post is not in weblog archive return (false)
This code is where the bug is most apparent:
A. catname is always "" (no category) when called by
radio.trackback.ping, so the first
ifstatement is true and the next statement is executed.
B. In the case we are interested in (a post that is not published to the "Home Page" and has links that Radio will send trackback pings to),
flNotOnHomePagefor that post is true by definition. The second
ifstatement is true and the next line of code is executed.
radio.weblog.getUrlForPostreturns a value of false to
radio.trackback.ping, and the url permalink parameter (adrurl in this macro's code) is never changed from its original value of "".
7. On return from
radio.trackback.ping takes the
five trackback parameters it has gathered (including the still empty url permalink
parameter) and passes them to
system.verbs.apps.trackback.ping to perform the ping.
Radio's trackback servers throw the error described above when they try to create a
new table entry with the empty url permalink parameter as a name.
The difficulty I see here in fixing the trackback code is determining a single permalink url to use when a post is not published to the "Home Page" and the post is published to multiple categories.