What steps will reproduce the problem?
1. Join a room.
2. Become disconnected and hibernating.
3. Wait for someone to write something to the room.
What is the expected output?
Message is queued and delivered upon reconnection.
What do you see instead?
Message is queued but an error stanza is returned to the room.
A Prosody MUC responds by kicking you as part of ghost prevention.
What version of the product are you using?
Either when using libevent or mod_smacks from prosody-modules after https://hg.prosody.im/prosody-modules/rev/e48dbb640408
Please provide any additional information below.
mod_smacks prevents sending stanzas while hibernating by dropping them in a filter
This results in session.send() skipping past the write() call and returning nil:
Previously, mod_smacks would return the empty string, which would "successfully" be written to the connection if using server_select.
However, with libevent, this write call returns nil, "locked" when the connection is dead.
After session.send() returns nil, in mod_message:
it proceeds to tailcall process_to_bare(), which hits this condition and returns an error:
This error then results in being kicked.
Also see #523 and #559
https://hg.prosody.im/trunk/rev/eed846384178 is what fixes this in 0.10, backport?