Let me describe a behaviour of chrome.pl XMPP server which I believe to
be erroneous. Observed with Psi and Pidgin.
Let's start with 2 registered users, for example Alice and Bob; they are
mutually authorized and both online so they see each other as
"available" in their XMPP clients.
1. Now, Bob's XMPP client gets suspended - either because Bob suspended
his computer running Linux, or because his machine just locked up.
2. Alice still sees Bob as "available" and sends him a message.
3. From Alice's point of view the message has been successfully
delivered (no error message) and Bob is still online. She may continue
4. After some long time (minutes) finally some timeout occurs and Bob's
perceived state changes to "offline".
5. Bob logs in again.
6. Bob never receives the messages Alice sent him in steps 2&3.
7. Alice doesn't get any notification that server failed to deliver her
messages to Bob.
IMHO in step 2 server should notice an error sending message to Bob
(detect stale connection), change it's state to "offline" and store the
message for further delivery.
If that's impossible due to very long timeout, then the messages should
still be kept in storage unless client acknowledges their receipt, so
Bob should be able to receive them after step 5.
Or, at least, Alice should get "undelivered message" errors in step 4 -
when server finally notices that Bob's connection is stale.
What do you think?
Sadly, with the current approach the communication is simply unreliable.