0
votes

My ejabberd server uses mysql DB as external storagea and I use method /create_room_with_opts of ejabberd API to create my rooms with option: {name: "persistent", value: "false"}. Everything works file and created rooms looklike actually temporary ones - they close automatically when last participants leave it.

But I have one problem - created not persistent rooms are saved in table muc_room, though it must contains only persistent room (https://docs.ejabberd.im/developer/sql-schema/#table-muc-room)

For example, I can have room with the followed options in muc_room table:

[{allow_change_subj,true},
 {allow_private_messages,true},
 {allow_private_messages_from_visitors,anyone},
 {allow_query_users,true},
 {allow_subscription,false},
 {allow_user_invites,false},
 {allow_visitor_nickchange,true},
 {allow_visitor_status,true},
 {anonymous,true},
 {captcha_protected,false},
 {lang,<<>>},
 {logging,false},
 {mam,true},
 {max_users,200},
 {members_by_default,true},
 {members_only,false},
 {moderated,true},
 {password,<<>>},
 {password_protected,false},
 ======> {persistent,false},
 {presence_broadcast,[moderator,participant,visitor]},
 {public,true},
 {public_list,true},
 {title,<<>>}]

The main problem is I receive all my not persistent room recreated while restarting my ejabberd server.

Questions: 1) Why are not persistent room created with ejabberd API stored in muc_room table (maybe some bug)? 2) How to avoid recreating these room when restarting ejabberd server (except removing it from DB: manually or using mysql event)?

1

1 Answers

0
votes

Why are not persistent room created with ejabberd API stored in muc_room table

That was intentionally added in this commit: https://github.com/processone/ejabberd/commit/05c2995c7a4c2afb8481826f9dbe9ed9ec0b282b

to solve this problem: https://github.com/processone/ejabberd/issues/1954

Apparently, right now that isn't necessary, so I've removed it in a recent commit: https://github.com/processone/ejabberd/commit/5574b21dd67ba898ea1ba55fb4556b6cd53c58cd