[jdev] dialback

Ben Turner ben.turner at siemens.com
Tue Jun 6 11:58:04 CDT 2006

On Fri, Jun 02, 2006 at 09:02:55AM -0600, Peter Saint-Andre wrote:
> If Server1 does not support XMPP 1.0 (including TLS), it MUST NOT
> include the version='1.0' attribute in the stream header it sends to
> Server2. However, if it supports dialback it MUST include the dialback
> namespace declaration in the stream header it sends to Server2. So if
> Server1 supports only dialback and not TLS, it would send:
> <stream:stream
>        xmlns='jabber:server'
>        xmlns:stream='http://etherx.jabber.org/streams'
>        xmlns:db='jabber:server:dialback'
>        to='Server1'>
> If Server2 detects that the stream header from Server1 does not include
> the version='1.0' attribute but does include the dialback namespace
> declaration, then it MUST NOT attempt to perform TLS negotiation.
> If Server2 breaks that rule and attempts to perform TLS negotiation
> anyway (BAD SERVER, BAD!), Server1 would in all likelihood simply close
> the stream with </stream:stream> (since it is probably an older server
> implementation) but it might first send an appropriate stream error,
> such as <not-authorized/> or <unsupported-stanza-type/> (though in
> practice this is doubtful).

Hi Peter,

Thanks for that bit of info.

Another quick question. If server1 (which supports TLS) attempts to connect with
server2 (which _doesn't_ support TLS) and server1 discovers this fact through
the absence of a version='1.0' in server2's stream header, is server1 supposed
to keep using the same TCP connection or open a new one? 

I have noticed that Wildfire opens a new TCP connection once it discovers that
dialback is required, it even sends a stream header without version='1.0' after
opening the new TCP connection. Why not just keep using the already opened TCP



Ben Turner
tel: +32 14 252326

~ Scientia Vincere Tenebras ~

More information about the JDev mailing list