Link-local messaging is defined in XEP-0174. Salut tries to adhere strictly to this specification. Unfortunately most implementation have their own unique set of quirks. Below a list of tested implementations and the quirks that salut needs to cope with to be interoperatable
Adium
Version 1.0.1
Requires port.p2pj to be set in the TXT record and connects on the port instead of the one in the SRV record
- Doesn't always announce the correct port in the SRV record
If txtvers is set in the TXT record it must have 1 as value
- Only uses the text inside the xhtml-im part of a message, ignores plaintext
Doesn't set the from attribute on message stanzas
Sets the to attribute on message stanza to the receivers IP address
Doesn't set to or from attributes on the stream opening
Doesn't send <stream:features/>
Doesn't support file transfer on link-local connections (see ticket #1257)
Version 1.0.2
- Compared to 1.0.1 the issue of only using the xhtml-im part is fixed. All other 1.0.1 problems still exist.
iChat
http://www.apple.com/macosx/features/ichat/
Version 3.1.8
Requires status to be set in the TXT record, value must be one of avail, away or dnd
Requires txtvers to be set, value must be 1
Doesn't set the from attribute on message stanzas
Doesn't set to or from attributes on the stream opening
Doesn't send <stream:features/>
Supports only out-of-band file transfers (XEP-0066) without stream initiation, actual file transfer is done using HTTP
Can receive files only if the server uses AppleSingle encoding but can send files to clients not using it
Doesn't support AppleSingle headers with no attributes
Cannot receive files sent with chunked encoding
Sends <iq type='result'/> even if the file transfer failed
On the rendezvous-dev mailing list there are some details on the implementation of file transfer, some other details are on Eagleeye87's blog
Gaim
Version 2.0.0 Beta
Requires 1st, last and status to be set in the TXT record
Doesn't set to or from attributes on the stream opening
Doesn't send <stream:features/>
Doesn't support file transfer on link-local connections (see ticket #2703)
Gajim
Version 0.11.1
If status is not set in the TXT record then it shows the presence as offline
Doesn't set to or from attributes on the stream opening
Doesn't send <stream:features/>
Supports only file transfers using SOCKS5 bytestreams with stream initiation (XEP-0095 and XEP-0096)
Pidgin
Version 2.2.2
Doesn't support file transfer on link-local connections (see ticket #2703)
- Thinks a conversation is closed when the tcp connection is dropped
- When initiating a connection to pidgin it sends the xml stream opening right away instead of waiting for the initiator
Doesn't send <stream:features/>
Version 2.3.0
Supports only file transfers using SOCKS5 bytestreams with stream initiation (XEP-0095 and XEP-0096)
- When initiating a connection to pidgin it sends the xml stream opening right away instead of waiting for the initiator
Doesn't send <stream:features/>

