Reputation: 487
I am using xmpp.js library to create a simple XMPP client and Ejabberd server (ejabberd/ecs:latest- docker image). When I created MUC, it created successfully and I even received this success message from the server:
<iq xmlns="jabber:client" xml:lang="en" to="admin@localhost/113578534561979249915762"
from="[email protected]" type="result" id="createGroup"/>
This is my MUC creating code:
xml("iq",{id:"createGroup",type:"set",to:`${id}@conference.localhost`},xml(
"query",{xmlns:"http://jabber.org/protocol/muc#owner"},xml(
"x",{xmlns:"jabber:x:data",type:"submit"},[
xml("field",{var:"muc#roomconfig_roomname"},xml("value",{},name)),
xml("field",{var:"muc#roomconfig_roomdesc"},xml("value",{},description))
]
)
));
But as soon as a MUC gets created and I try to view MUC, the Ejabberd server closes with a crash report.
This is the config for muc_mod for my Ejabberd server:
mod_muc:
access:
- allow
access_admin:
- allow: admin
access_create: muc_create
access_persistent: muc_create
access_mam:
- allow
default_room_options:
allow_subscription: true
mam: true
mod_muc_admin: {}
This is the crash report I received:
xmpp-server | 2022-01-21 11:25:08.712377+00:00 [error] CRASH REPORT:
xmpp-server | crasher:
xmpp-server | initial call: ejabberd_http:init/3
xmpp-server | pid: <0.1407.0>
xmpp-server | registered_name: []
xmpp-server | exception error: undefined function lib:format_exception/6
xmpp-server | in function ejabberd_hooks:safe_apply/4 (src/ejabberd_hooks.erl, line 247)
xmpp-server | in call from ejabberd_hooks:run_fold1/4 (src/ejabberd_hooks.erl, line 217)
xmpp-server | in call from ejabberd_web_admin:process_admin/3 (src/ejabberd_web_admin.erl, line 548)
xmpp-server | in call from ejabberd_http:process/2 (src/ejabberd_http.erl, line 373)
xmpp-server | in call from ejabberd_http:process_request/1 (src/ejabberd_http.erl, line 496)
xmpp-server | in call from ejabberd_http:process_header/2 (src/ejabberd_http.erl, line 293)
xmpp-server | in call from ejabberd_http:parse_headers/1 (src/ejabberd_http.erl, line 218)
xmpp-server | ancestors: [ejabberd_http_sup,ejabberd_sup,<0.184.0>]
xmpp-server | message_queue_len: 0
xmpp-server | messages: []
xmpp-server | links: [<0.720.0>,#Port<0.3190>]
xmpp-server | dictionary: []
xmpp-server | trap_exit: false
xmpp-server | status: running
xmpp-server | heap_size: 2586
xmpp-server | stack_size: 27
xmpp-server | reductions: 10478
xmpp-server | neighbours:
xmpp-server |
xmpp-server | 2022-01-21 11:25:08.716445+00:00 [error] SUPERVISOR REPORT:
xmpp-server | supervisor: {local,ejabberd_http_sup}
xmpp-server | errorContext: child_terminated
xmpp-server | reason: {undef,
xmpp-server | [{lib,format_exception,
xmpp-server | [2,error,
xmpp-server | {badmatch,{error,timeout}},
xmpp-server | [{mod_muc_admin,get_room_config,1,
xmpp-server | [{file,"src/mod_muc_admin.erl"},{line,891}]},
xmpp-server | {mod_muc_admin,build_info_room,1,
xmpp-server | [{file,"src/mod_muc_admin.erl"},{line,603}]},
xmpp-server | {mod_muc_admin,'-build_info_rooms/1-lc$^0/1-0-',1,
xmpp-server | [{file,"src/mod_muc_admin.erl"},{line,600}]},
xmpp-server | {mod_muc_admin,make_rooms_page,3,
xmpp-server | [{file,"src/mod_muc_admin.erl"},{line,551}]},
xmpp-server | {mod_muc_admin,web_page_main,2,
xmpp-server | [{file,"src/mod_muc_admin.erl"},{line,518}]},
xmpp-server | {ejabberd_hooks,safe_apply,4,
xmpp-server | [{file,"src/ejabberd_hooks.erl"},{line,236}]},
xmpp-server | {ejabberd_hooks,run_fold1,4,
xmpp-server | [{file,"src/ejabberd_hooks.erl"},{line,217}]},
xmpp-server | {ejabberd_web_admin,process_admin,3,
xmpp-server | [{file,"src/ejabberd_web_admin.erl"},{line,548}]}],
xmpp-server | #Fun<misc.6.25947704>,#Fun<misc.7.25947704>],
xmpp-server | []},
xmpp-server | {ejabberd_hooks,safe_apply,4,
xmpp-server | [{file,"src/ejabberd_hooks.erl"},{line,247}]},
xmpp-server | {ejabberd_hooks,run_fold1,4,
xmpp-server | [{file,"src/ejabberd_hooks.erl"},{line,217}]},
xmpp-server | {ejabberd_web_admin,process_admin,3,
xmpp-server | [{file,"src/ejabberd_web_admin.erl"},{line,548}]},
xmpp-server | {ejabberd_http,process,2,
xmpp-server | [{file,"src/ejabberd_http.erl"},{line,373}]},
xmpp-server | {ejabberd_http,process_request,1,
xmpp-server | [{file,"src/ejabberd_http.erl"},{line,496}]},
xmpp-server | {ejabberd_http,process_header,2,
xmpp-server | [{file,"src/ejabberd_http.erl"},{line,293}]},
xmpp-server | {ejabberd_http,parse_headers,1,
xmpp-server | [{file,"src/ejabberd_http.erl"},{line,218}]}]}
xmpp-server | offender: [{pid,<0.1407.0>},
xmpp-server | {id,undefined},
xmpp-server | {mfargs,{ejabberd_http,start_link,undefined}},
xmpp-server | {restart_type,temporary},
xmpp-server | {shutdown,5000},
xmpp-server | {child_type,worker}]
I tried restarting the server several times but it didn't work.
Upvotes: 0
Views: 121
Reputation: 4120
First of all: you don't mention what version of ejabberd you are using. Maybe it's a bug fixed in a recent version?
You create a new room using your custom XMPP client. Why does the error message mention ejabberd_http
and ejabberd_web_admin
? Maybe that error message appears when you try to view the room details in the WebAdmin -> MUC page?
There's a {error, timeout}
that then triggers other errors. I guess only you know what's going on there... as this log mentions stuff that you have not mentioned.
Try creating the room using a well-known XMPP client, like Gajim or Psi. Does the WebAdmin page work correctly? Then the problem is somewhere in your client.
Create a room using a XMPP client, and another using your client. Then view the information stored in muc_online_room
mnesia table (WebAdmin -> Nodes -> your node -> Database. Do you see some weird difference?
Set persistent: true
create new rooms and check the content of muc_room
table. Some weird difference now?
Upvotes: 1