diff --git a/spec/muc.js b/spec/muc.js
index c63b1af80..9c8c4a3ff 100644
--- a/spec/muc.js
+++ b/spec/muc.js
@@ -2081,6 +2081,86 @@
done();
}));
+
+ it("reconnects when no-acceptable error is returned when sending a message",
+ mock.initConverse(
+ null, ['rosterGroupsFetched'], {},
+ async function (done, _converse) {
+
+ const groupchat_jid = 'coven@chat.shakespeare.lit';
+ await test_utils.openAndEnterChatRoom(_converse, 'coven', 'chat.shakespeare.lit', 'romeo');
+ const view = _converse.chatboxviews.get(groupchat_jid);
+ expect(view.model.get('connection_status')).toBe(converse.ROOMSTATUS.ENTERED);
+ await test_utils.sendMessage(view, 'hello world');
+
+ const stanza = u.toStanza(`
+
+
+
+
+ `);
+ _converse.connection._dataRecv(test_utils.createRequest(stanza));
+
+ let sent_stanzas = _converse.connection.sent_stanzas;
+ const iq = await test_utils.waitUntil(() => sent_stanzas.filter(s => sizzle(`[xmlns="${Strophe.NS.PING}"]`, s).length).pop());
+ expect(Strophe.serialize(iq)).toBe(
+ ``+
+ ``+
+ ``);
+
+ const result = u.toStanza(`
+
+
+
+
+ `);
+ _converse.connection.sent_stanzas = [];
+ sent_stanzas = _converse.connection.sent_stanzas;
+ _converse.connection._dataRecv(test_utils.createRequest(result));
+ const pres = await test_utils.waitUntil(
+ () => sent_stanzas.filter(s => s.nodeName === 'presence').pop());
+ expect(Strophe.serialize(pres)).toBe(
+ ``+
+ ``+
+ ``);
+ done();
+ }));
+
+
+ it("informs users if the room configuration has changed",
+ mock.initConverse(
+ null, ['rosterGroupsFetched'], {},
+ async function (done, _converse) {
+
+ const groupchat_jid = 'coven@chat.shakespeare.lit';
+ await test_utils.openAndEnterChatRoom(_converse, 'coven', 'chat.shakespeare.lit', 'romeo');
+ const view = _converse.chatboxviews.get(groupchat_jid);
+ expect(view.model.get('connection_status')).toBe(converse.ROOMSTATUS.ENTERED);
+
+ const stanza = u.toStanza(`
+
+
+
+
+ `);
+ _converse.connection._dataRecv(test_utils.createRequest(stanza));
+ await test_utils.waitUntil(() => view.el.querySelectorAll('.chat-content .chat-info').length === 2);
+ const info_messages = view.el.querySelectorAll('.chat-content .chat-info');
+ expect(info_messages[0].textContent).toBe('romeo has entered the groupchat');
+ expect(info_messages[1].textContent).toBe('groupchat logging is now enabled');
+ done();
+ }));
+
+
it("informs users if their nicknames have been changed.",
mock.initConverse(
null, ['rosterGroupsFetched'], {},
diff --git a/src/headless/converse-chatboxes.js b/src/headless/converse-chatboxes.js
index 238402a8a..b8ed33256 100644
--- a/src/headless/converse-chatboxes.js
+++ b/src/headless/converse-chatboxes.js
@@ -989,7 +989,7 @@ converse.plugins.add('converse-chatboxes', {
async onErrorMessage (message) {
/* Handler method for all incoming error message stanzas
- */
+ */
const from_jid = Strophe.getBareJidFromJid(message.getAttribute('from'));
if (utils.isSameBareJID(from_jid, _converse.bare_jid)) {
return true;