Hi Daniel,
yes, there are still several issues we've found. I hope that you or the other authors of the module will find some time to look into the issues.
1. last member in the chat room exits + call of ./kamctl fifo imc_list_rooms crashes Kamailio.
Working example (no bugs):
oz@abc.hr creates chat room
chat-555@abc.hr. Doesn't
write messages to the chat room. Exits (#exit). Receives message: "The room has been destroyed". Call of ./kamctl fifo imc_list_rooms works fine and doesn't display the room which was just destroyed.
Example which crashes Kamailio:
oz@abc.hr creates chat room
chat-555@abc.hr. Writes something to the chat room. Exits (#exit). No messages are displayed in SIP client, although he should get "The room has been destroyed". Call of ./kamctl fifo imc_list_rooms doesn't display anything (although there are other rooms besides
chat-555@abc.hr) and crashes Kamailio. In the database, in imc_rooms,
chat-555@abc.hr is still there, but there are no members in imc_members table. Log:
#processing of #exit
Jun 2 16:21:49 ser-test ./kamailio[5547]: INFO: <script>: going to imc: F [
sip:oz@abc.hr] T [
sip:chat-555@abc.hr] B [#exit]
Jun 2 16:21:49 ser-test ./kamailio[5547]: DEBUG: imc [imc.c:525]: found command
Jun 2 16:21:49 ser-test ./kamailio[5547]: DEBUG: imc [imc_cmd.c:146]: command: [exit]
Jun 2 16:21:49 ser-test ./kamailio[5547]: DEBUG: imc [imc_mng.c:373]: found member
Jun 2 16:21:49 ser-test ./kamailio[5547]: DEBUG: imc [imc_cmd.c:1091]: nr = 0
#Call of ./kamctl fifo imc_list_rooms
Jun 2 16:22:02 ser-test ./kamailio[5550]: DEBUG: mi_fifo [fifo_fnc.c:493]: entered consume
Jun 2 16:22:02 ser-test kernel: [5934996.535094] kamailio[5550]: segfault at 10 ip 7f85c0b92a46 sp 7fffffffc700 error 4 in imc.so[7f85c0b8c000+17000]
Jun 2 16:22:02 ser-test ./kamailio[5550]: DEBUG: mi_fifo [fifo_fnc.c:493]: **** done consume
Jun 2 16:22:02 ser-test ./kamailio[5550]: DEBUG: mi_fifo [fifo_fnc.c:507]: done parsing the mi tree
Jun 2 16:22:02 ser-test ./kamailio[5557]: : <core> [pass_fd.c:293]: ERROR: receive_fd: EOF on 23
Jun 2 16:22:02 ser-test ./kamailio[5557]: DEBUG: <core> [tcp_main.c:3554]: DBG: handle_ser_child: dead child 11, pid 5550 (shutting down?)
Jun 2 16:22:02 ser-test ./kamailio[5557]: DEBUG: <core> [io_wait.h:617]: DBG: io_watch_del (0x81b400, 23, -1, 0x0) fd_no=23 called
Jun 2 16:22:02 ser-test ./kamailio[5539]: ALERT: <core> [main.c:741]: child process 5550 exited by a signal 11
Jun 2 16:22:02 ser-test ./kamailio[5539]: ALERT: <core> [main.c:744]: core was generated
Jun 2 16:22:02 ser-test ./kamailio[5539]: INFO: <core> [main.c:756]: INFO: terminating due to SIGCHLD
Jun 2 16:22:02 ser-test ./kamailio[5540]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5541]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5542]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5543]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5544]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5545]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5546]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5547]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5548]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5551]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5552]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5553]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5549]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5554]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5555]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5556]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5557]: INFO: <core> [main.c:807]: INFO: signal 15 received
Jun 2 16:22:02 ser-test ./kamailio[5539]: DEBUG: imc [imc.c:709]: room 11 chat-555
Backtrace: (same as for #join to private conference described in other topic!)
#0 0x00007f85c557eed5 in raise () from /lib/libc.so.6
#1 0x00007f85c55803f3 in abort () from /lib/libc.so.6
#2 0x000000000046119e in sig_alarm_abort (signo=<value optimized out>) at main.c:651
#3 <signal handler called>
#4 0x00007f85c5619307 in syscall () from /lib/libc.so.6
#5 0x00007f85c0b9c0c6 in imc_del_room (name=0x7f85be80a388, domain=0x7f85be80a398) at ../../mem/../futexlock.h:123
#6 0x00007f85c0b9c1d8 in imc_htable_destroy () at imc_mng.c:104
#7 0x00007f85c0b9047a in destroy () at imc.c:736
#8 0x00000000004d9964 in destroy_modules () at sr_module.c:732
#9 0x0000000000462930 in cleanup (show_status=1) at main.c:527
#10 0x0000000000463564 in shutdown_children (sig=<value optimized out>, show_status=1) at main.c:668
#11 0x0000000000463e9c in handle_sigs () at main.c:759
#12 0x0000000000465572 in main_loop () at main.c:1676
#13 0x0000000000467f53 in main (argc=<value optimized out>, argv=0x0) at main.c:2398
2. #remove command prints wrong info.
Example:
oz@abc.hr creates chat room
chat-555@abc.hr. Invites
slavko@abc.hr
(#invite
slavko@abc.hr). Invites
pero@abc.hr. Both of them join with
#accept.
oz@abc.hr removes pero (#remove
pero@abc.hr). Pero's client displays messages: "You have been removed from this room." and Pero can't send messages to chat room any more. However, Oz's and Slavko's clients display message: "<
sip:pero@abc.hr> has joined the room".
3. #invite & #remove commands do not work after typing some text in conference room.
Example 1:
oz@abc.hr creates chat room
chat-555@abc.hr. Invites
slavko@abc.hr (#invite
slavko@abc.hr). Invites
pero@abc.hr. Both of them join with #accept. Pero and Slavko write messages to chat room. Oz can remove them at this point. However, after Oz writes a message to chat room, he can't remove members any more and receives 500 command error. Log:
Jun 2 14:58:42 ser-test /usr/local/kamailio-ozren/sbin/kamailio[4139]: INFO: <script>: going to imc: F [
sip:oz@abc.hr] T [
sip:chat-555@abc.hr] B [#remove
slavko@abc.hr]
Jun 2 14:58:42 ser-test /usr/local/kamailio-ozren/sbin/kamailio[4139]: DEBUG: imc [imc.c:525]: found command
Jun 2 14:58:42 ser-test /usr/local/kamailio-ozren/sbin/kamailio[4139]: DEBUG: imc [imc_cmd.c:146]: command: [remove]
Jun 2 14:58:42 ser-test /usr/local/kamailio-ozren/sbin/kamailio[4139]: DEBUG: imc [imc_cmd.c:151]: parameter 0=[
slavko@abc.hr]
Jun 2 14:58:42 ser-test /usr/local/kamailio-ozren/sbin/kamailio[4139]: DEBUG: imc [imc_mng.c:373]: found member
Jun 2 14:58:42 ser-test /usr/local/kamailio-ozren/sbin/kamailio[4139]: ERROR: imc [imc_cmd.c:664]: user [oz] has no right to remove other users [
sip:slavko@abc.hr]!
Jun 2 14:58:42 ser-test /usr/local/kamailio-ozren/sbin/kamailio[4139]: ERROR: imc [imc.c:578]: failed to handle 'remove'
./kamctl fifo imc_list_rooms
ROOM:: URI=
sip:chat-555@abc.hr MEMBERS=0 OWNER=
sip:oz@abc.hr./kamctl fifo imc_list_members
sip:chat-555@abc.hr
ROOM::
sip:chat-555@abc.hr NR_OF_MEMBERS=2
MEMBER::
sip:oz@abc.hr MEMBER::
sip:slavko@abc.hr
Example 2:
oz@abc.hr creates chat room
chat-666@abc.hr. Invites
slavko@abc.hr. Slavko joins with #accept. Oz writes a message to chat room. Invites
pero@abc.hr. Imc manager returns 500 command error. (NOTE: If Oz doesn't write any text to chat room, he can invite multiple users.) Here is the log:
Jun 2 16:42:43 ser-test /usr/local/kamailio-ozren/sbin/kamailio[5848]: INFO: <script>: going to imc: F [
sip:oz@abc.hr] T [
sip:chat-666@abc.hr] B [#invite
pero@abc.hr]
Jun 2 16:42:43 ser-test /usr/local/kamailio-ozren/sbin/kamailio[5848]: DEBUG: imc [imc.c:525]: found command
Jun 2 16:42:43 ser-test /usr/local/kamailio-ozren/sbin/kamailio[5848]: DEBUG: imc [imc_cmd.c:146]: command: [invite]
Jun 2 16:42:43 ser-test /usr/local/kamailio-ozren/sbin/kamailio[5848]: DEBUG: imc [imc_cmd.c:151]: parameter 0=[
pero@abc.hr]
Jun 2 16:42:43 ser-test /usr/local/kamailio-ozren/sbin/kamailio[5848]: DEBUG: imc [imc_mng.c:373]: found member
Jun 2 16:42:43 ser-test /usr/local/kamailio-ozren/sbin/kamailio[5848]: ERROR: imc [imc_cmd.c:441]: user [oz] has no right to invite other users!
Jun 2 16:42:43 ser-test /usr/local/kamailio-ozren/sbin/kamailio[5848]: ERROR: imc [imc.c:554]: failed to handle 'invite'
./kamctl fifo imc_list_rooms
ROOM:: URI=
sip:chat-666@abc.hr MEMBERS=0 OWNER=
sip:oz@abc.hr./kamctl fifo imc_list_members
sip:chat-666@abc.hr
ROOM::
sip:chat-666@abc.hr NR_OF_MEMBERS=2
MEMBER::
sip:oz@abc.hr MEMBER::
sip:slavko@abc.hr
4. ./kamctl fifo imc_list_rooms command doesn't report correct number of members in the room, number of members remains 0, although members have successfully joined the chat room and ./kamctl fifo imc_list_members
sip:chat-555@abc.hr returns correct number of members.
Best regards,
Ozren