Errata

Programming Jabber

Errata for Programming Jabber

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Printed Page examples
An error in "newsagent.pl"

In subroutine "iq_version",

the line
$node->attr('code', IQ_RESULT);

should be changed to:

$node->attr('type', IQ_RESULT);

Otherwise, it will NOT generate a valid result. While using Exodus,
client would keep sending requests, that would be very bad.

Anonymous   
Printed Page 19
Example 2-7, "The search request"

Should the iq type for the SEND: be a "get" rather than a "set" in the line

SEND: <iq type='set' from='ldap.company-a.com'

?

This is based on comparing it with the request in examples 2-5 on page 17 and 2-6 on
page 18 where they both start with

SEND: <iq type='get'

Anonymous   
Printed Page 22
First bullet "As a whole..."

Just a note that in this bullet is the first mention of "JID" and
there was no previous mention of what the acronym meant. I
*assumed* it meant "Jabber ID", but didn't know that until later.

I went back and found a mention to "Jabber IDs" on page 6, 2nd bullet
from the bottom, but no acronym there.

I would just suggest that maybe the acronym appear on page 6, and
maybe the text on page 22 say "Jabber ID (JID)" since this is the
first mention and some of us may be reading about Jabber for the
very first time.

Anonymous   
Printed Page 63
First para under "custreply" term

The text says that the custreply rule "sets the incoming message
type to normal (in case it was a chat message)", but example 4-9
does NOT include any rule that would do this.

Later, in the table on page 66, I can see what this code *should* be:

<settype>normal</settype>

but that is not in the example 4-9.

Anonymous   
Printed Page 80
Last sentence in 3rd paragraph down in "Effect" column

Text should say "below" instead of "beyond":

"the cache purge check mechanism runs only every 30 seconds,
so any resolution *beyond* 30 is meaningless"

Anonymous   
Printed Page 140
First paragraph of the "to" section

The > after the word "hostname" shouldn't be there.

Either that or there should be a < before hostname. :)

Anonymous   
Printed Page 155
Footnote at bottom of page

I don't know if this is an error, but in the paragraph above the
heading "Availability Tracker", it says:

All the members in that entity's roster who have a subscription to
that entity's presence will receive a copy of that <presence/>
packet and thereby be informed.*

The footnote then says:

That is, where there's a value of to or both in the roster items'
subscription attribute.

However, two paragraphs earlier (starting "The only difference...")
the final sentence seems to me to indicate that if you are subscribed
to me, your subscription attribute in my roster would be 'from'. If
this is true, the footnote should really read:

That is, where there's a value of *from* or both in the roster
items' subscription attribute.

Anonymous   
Printed Page 164
The vCard line of the SEND: example

Does the correction made regarding the vCard version number on pages 206 - 209 also
apply to page 164?

Anonymous   
Printed Page 196
Paragraph just above the Owl.

Missing / in the <display> tag, i.e.

"The format of the <tz/> and <display> tags is not fixed."

instead of

"The format of the <tz/> and <display/> tags is not fixed."

Just for consistency. :)

Anonymous   
Printed Page 201
Code in middle of page and bullet list below that.

Minor formatting suggestion. In the code example, you have:

<displayed/>
<offline/>

but then the bullets describing this are reversed in order:

* If and when the message is stored offline...
* When the message is eventuatlly displayed...

and the text that follows is:

The former event will be set by the server; that latter...

I would just suggest that the code sync with the text. Not a big
deal.. just a suggestion.

Anonymous   
Printed Page 203
Bold line in example 6-7

Should the seconds='600' be seconds='1800' to match the value set in the SEND: on
page 202?

Anonymous   
Printed Page 206-209
Example 6-8, 6-9, and code on 209

The vCard element should have the attribute version='2.0', not version='3.0' (And it should be added to example 6-9. The "official"
Jabber documents on this were unfortunately in error, so that error easily transferred to the book. However, being one of the peop
le working on the vCard specification for Jabber, I can assure you it should be 2.0. Hopefully our documentation will be better in
the future.

Anonymous   
Printed Page 208
Duplicate 'owl' note on pages 208 and 206.

The 'owl' note ("Jabber uses the vCard format...") on page 208 is
identical to the one on page 206. I assume you only want one of
them to be there! :-)

Anonymous   
Printed Page 223
Method subheading

The description of how to compute the digest for digest authentication is wrong when
used against Jabbered 1.4.2 or as described in draft-miller-xmpp-im-00
(http://www.9780596002022.org/ietf/draft-miller-xmpp-im-00.htm).

The book states that the digest is composed of the stream id concatenated to the
password (the password followed by the stream id)then hashed using the SHA1 hashing
algorithm. The book has it reversed. It is supposed to be the stream id conatenated
by the password (the stream id followed by the password).

Anonymous   
Printed Page 239
Need to register 'cvsmesg' user

I don't know that this is *serious*, but it would, I believe, prevent
the script from running. In "The cvsmsg Script", there should be
some mention that the user 'cvsmesg' needs to be *registered* before
it could be used through a script like this.

Anonymous   
Printed Page 257
Example 8-7. The cvsmsg-s script

It appears that the current version of 9780596002022.py (version 0.3 from January 2002) is
not fully compatible with python 2.2. With python 2.2 the split method is inherent
in a string and is implemented by calling the split() method on the string object.
However, the JID class in 9780596002022.py does not implement a split method, and so the
example does not work.

The example in the function 'presenceCB' shows this:

parts = split(prs.getFrom(), '/')
who = parts[0]

However, when the script receives its first presence packet, it will die with an
error essentially saying there is no split method in the JID class. My first
workaround was to do instead the following:

fr = prs.getFrom()
who = fr.getNode() + '@' + fr.getDomain()

but then I noticed in the 9780596002022.py doc that the class has a
'getStripped' method that returns the JID without the Resource. So
the line becomes the much simpler:

who = prs.getFrom().getStripped()

Works great, now.

Anonymous   
Printed Page 260
2ns paragraph of the Addressing <presence/> Elements box

The paragraph talks about "we use" and "our conversation" but ends with "your
presence". I'm not an English expert - should it be "our presence"?

Anonymous   
Printed Page 281
Example 904

"Example 9-4. The keyassist Perl script" on pages 281 to 284 doesn't look cryptic
enough to be Perl. I think it should be titled "Example 9-4. The keyassist Python
script"

Anonymous   
Printed Page 407
"Example 10-14"

In order to keep the consistency between Example 10-13 and
Example 10-14, the value of "endpoint" in Example 10-14 should be:

...
endpoint = 'server@gnu.mine.nu/jrpc-server',
...

And, it would be nice if add a "print "
";" at the end of
Example 10-14.

Anonymous