#1300 [muc] rooms are hidden after restart/reload of muc module
Reporter
David
Owner
Nobody
Created
Updated
Stars
★★ (2)
Tags
Priority-Medium
Type-Defect
Status-NeedInfo
David
on
What steps will reproduce the problem?
1. Create a room that is public(listed)
2. Restart or reload muc
3. Use a xmpp client to list the rooms
What is the expected output?
The room should show up
What do you see instead?
it does not list the room
What version of the product are you using? On what operating system?
using 0.11.2 on ubuntu xenial.
Please provide any additional information below.
upgraded from 0.10 the rooms had been created on 0.10.
I managed to mitigate this behavior by setting `muc_room_default_public` to true on the component. As far as i understood it should only affect new rooms and not "restored" rooms, but it seems to affect restored rooms.
We use storage_internal.
At runtime we could make the rooms visible by marking the as hidden and then marking them public again.
Zash
on
Thanks for the report!
muc_room_default_public defaults to false for privacy reasons,
see https://hg.prosody.im/trunk/rev/7277797a4988
Rooms created before you changed this would have the then defaults recorded in their
individual configurations. These settings only affect rooms at the moment of creation,
not existing rooms.
Please check the data in muchost/config/room.dat what it says for "hidden".
If this matches the visibility in disco items then I don't see any issue.
Changes
tags Status-NeedInfo
David
on
Thanks for you quick reply!
The stored files don't contain any "hidden" section, they do however when i configure the room to be hidden. Once i make the room public the section is removed again.
All rooms had been set to be public and when looking in '/config' with pidgin they showed as being publicly searchable. Deactivating that checkbox and re-enabling it helped to make the room visible again until one restarted prosody or reloaded the muc module.
So from what i could see in the files "hidden" would either be true or nil but never false.
Zash
on
What other configuration does the rooms have? And what MUC related settings are in the config file?
David
on
The muc settings had only been:
Component "HOSTNAME" "muc"
I since have added some defaults to make the rooms show up again.
the settings of one of the rooms(right now):
return {
["jid"] = "webscale@HOSTNAME";
["_data"] = {
["subject"] = "https://twitter.com/sadserver/status/1008844109895774208";
["whois"] = "moderators";
["subject_from"] = "webscale@Hostname/Anna";
["persistent"] = true;
["history_length"] = 200;
};
["_affiliation_data"] = {};
["_affiliations"] = {
["JID1@hostname"] = "owner";
["jid2@hostname"] = "owner";
["jid3@hostname"] = "owner";
["jid4@hostname"] = "owner";
};
};
Zash
on
> added some defaults
And these are?
Zash
on
> 1. Create a room that is public(listed)
Is it persistent too? If not, it is likely lost on restart.
David
on
muc_room_default_public = true
muc_room_default_history_length = 200
muc_room_default_language = "en"
The first one i have added specifically to make the rooms reappear. The last two are just sane defaults for our use case, that i added after verifying that `muc_room_default_public = true` made the rooms reappear.
Yes, the room has been persistent. the room config i pasted above has not changed during the process (that is apart from me marking it at hidden once and then marking it public again, as described above)
Zash
on
What is the content of `persistent.dat` under the MUCs directory?
David
on
It has all our persistent rooms listed the room mentioned above is also present:
return {
["rooma@hostname"] = true;
["webscale@hostname"] = true;
["roomc@hostname"] = true;
};
Zash
on
And the matching configurations have persistent = true and hidden = nil?
Still unable to reproduce. Closest I got was by deleting persistent.dat, but it manages to recover from that.
David
on
Yes, persistent is true and hidden is unset.
That said, i can only see the room config files from after the update to 0.11 (from 0.10).
What steps will reproduce the problem? 1. Create a room that is public(listed) 2. Restart or reload muc 3. Use a xmpp client to list the rooms What is the expected output? The room should show up What do you see instead? it does not list the room What version of the product are you using? On what operating system? using 0.11.2 on ubuntu xenial. Please provide any additional information below. upgraded from 0.10 the rooms had been created on 0.10. I managed to mitigate this behavior by setting `muc_room_default_public` to true on the component. As far as i understood it should only affect new rooms and not "restored" rooms, but it seems to affect restored rooms. We use storage_internal. At runtime we could make the rooms visible by marking the as hidden and then marking them public again.
Thanks for the report! muc_room_default_public defaults to false for privacy reasons, see https://hg.prosody.im/trunk/rev/7277797a4988 Rooms created before you changed this would have the then defaults recorded in their individual configurations. These settings only affect rooms at the moment of creation, not existing rooms. Please check the data in muchost/config/room.dat what it says for "hidden". If this matches the visibility in disco items then I don't see any issue.
ChangesThanks for you quick reply! The stored files don't contain any "hidden" section, they do however when i configure the room to be hidden. Once i make the room public the section is removed again. All rooms had been set to be public and when looking in '/config' with pidgin they showed as being publicly searchable. Deactivating that checkbox and re-enabling it helped to make the room visible again until one restarted prosody or reloaded the muc module. So from what i could see in the files "hidden" would either be true or nil but never false.
What other configuration does the rooms have? And what MUC related settings are in the config file?
The muc settings had only been: Component "HOSTNAME" "muc" I since have added some defaults to make the rooms show up again. the settings of one of the rooms(right now): return { ["jid"] = "webscale@HOSTNAME"; ["_data"] = { ["subject"] = "https://twitter.com/sadserver/status/1008844109895774208"; ["whois"] = "moderators"; ["subject_from"] = "webscale@Hostname/Anna"; ["persistent"] = true; ["history_length"] = 200; }; ["_affiliation_data"] = {}; ["_affiliations"] = { ["JID1@hostname"] = "owner"; ["jid2@hostname"] = "owner"; ["jid3@hostname"] = "owner"; ["jid4@hostname"] = "owner"; }; };
> added some defaults And these are?
> 1. Create a room that is public(listed) Is it persistent too? If not, it is likely lost on restart.
muc_room_default_public = true muc_room_default_history_length = 200 muc_room_default_language = "en" The first one i have added specifically to make the rooms reappear. The last two are just sane defaults for our use case, that i added after verifying that `muc_room_default_public = true` made the rooms reappear. Yes, the room has been persistent. the room config i pasted above has not changed during the process (that is apart from me marking it at hidden once and then marking it public again, as described above)
What is the content of `persistent.dat` under the MUCs directory?
It has all our persistent rooms listed the room mentioned above is also present: return { ["rooma@hostname"] = true; ["webscale@hostname"] = true; ["roomc@hostname"] = true; };
And the matching configurations have persistent = true and hidden = nil? Still unable to reproduce. Closest I got was by deleting persistent.dat, but it manages to recover from that.
Yes, persistent is true and hidden is unset. That said, i can only see the room config files from after the update to 0.11 (from 0.10).