X Disconnected user remains in session (prosody 0.11)

Hello all,
from long time I’m suffering from this issue, the empty /disconnected user still remain in the room.
when I re open the room, I found disconnected people are still displayed on meeting as you see on the below print screen, the number of remain empty participant is increased each time.
I have prosody 0.11 installed but didn’t solve the issue, I put my comments in other similar topic to get help but no success.
for that I rewrite this issue in “install & Config” category, hopping to find awesome guys to solve it, I remarked that many people meet from the same issue… if you solve it you will help lots of people. Thank you all in advance!

3 Likes

Can you share your prosody config?

Here my prosody config:

plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }

    -- domain mapper options, must at least have domain base set to use the mapper
    muc_mapper_domain_base = "meet.mydomain.duckdns.org";

    turncredentials_secret = "fLFDcBMPWEapGoFE";

    turncredentials = {
      { type = "stun", host = "meet.mydomain.duckdns.org", port = "4446" },
      { type = "turn", host = "meet.mydomain.duckdns.org", port = "4446", transport = "udp" },
      { type = "turns", host = "meet.mydomain.duckdns.org", port = "443", transport = "tcp" }
    };

    cross_domain_bosh = false;
    consider_bosh_secure = true;
    network_backend = "epoll";
    VirtualHost "meet.mydomain.duckdns.org"
            -- enabled = false -- Remove this line to enable this host
            authentication = "internal_plain"
            -- Properties below are modified by jitsi-meet-tokens package config
            -- and authentication above is switched to "token"
            --app_id="example_app_id"
            --app_secret="example_app_secret"
            -- Assign this host a certificate for TLS, otherwise it would use the one
            -- set in the global section (if any).
            -- Note that old-style SSL on port 5223 only supports one certificate, and will always
            -- use the global one.
            ssl = {
                    key = "/etc/prosody/certs/meet.mydomain.duckdns.org.key";
                    certificate = "/etc/prosody/certs/meet.mydomain.duckdns.org.crt";
            }
            speakerstats_component = "speakerstats.meet.mydomain.duckdns.org"
            conference_duration_component = "conferenceduration.meet.mydomain.duckdns.org"
            -- we need bosh
            modules_enabled = {
                "bosh";
                "pubsub";
                "ping"; -- Enable mod_ping
                "speakerstats";
                "turncredentials";
                "conference_duration";
            }
            c2s_require_encryption = false

    Component "conference.meet.mydomain.duckdns.org" "muc"
        storage = "memory"
        modules_enabled = {
            "muc_meeting_id";
            "muc_domain_mapper";
            -- "token_verification";
    	"persist_muc_passwords";
        }
        admins = { "focus@auth.meet.mydomain.duckdns.org" }
        muc_room_locking = false
        muc_room_default_public_jids = true
        storage = {
    	persistent_muc_passwds = "internal";
           }
         days_to_persist_muc_passwds = 1;

    -- internal muc component
    Component "internal.auth.meet.mydomain.duckdns.org" "muc"
        storage = "memory"
        modules_enabled = {
          "ping";
        }
        admins = { "focus@auth.meet.mydomain.duckdns.org", "jvb@auth.meet.mydomain.duckdns.org" }
        muc_room_locking = false
        muc_room_default_public_jids = true

    VirtualHost "auth.meet.mydomain.duckdns.org"
        ssl = {
            key = "/etc/prosody/certs/auth.meet.mydomain.duckdns.org.key";
            certificate = "/etc/prosody/certs/auth.meet.mydomain.duckdns.org.crt";
        }
        authentication = "internal_plain"

    Component "focus.meet.mydomain.duckdns.org"
        component_secret = "hMK4RWsH"

    Component "speakerstats.meet.mydomain.duckdns.org" "speakerstats_component"
        muc_component = "conference.meet.mydomain.duckdns.org"

    Component "conferenceduration.meet.mydomain.duckdns.org" "conference_duration_component"
        muc_component = "conference.meet.mydomain.duckdns.org"

    VirtualHost "guest.meet.mydomain.duckdns.org"
    	authentication = "anonymous"
    	--speakerstats_component = "speakerstats.meet.mydomain.duckdns.org"
            conference_duration_component = "conferenceduration.meet.mydomain.duckdns.org"
            -- we need bosh
            modules_enabled = {
                --"speakerstats";
                "conference_duration";
            }
            c2s_require_encryption = false

What does persist_muc_passwords do?

Your config is wrong as you have two storage definitions:

Component "conference.meet.mydomain.duckdns.org" "muc"
        storage = "memory"
...
     storage = {
    	persistent_muc_passwds = "internal";
           }

Get rid of the second one. I suspect that one messes up the things …

here my new config it’s solved the issue, but I lost the password persistent when I reboot my server

Component "conference.meet.mydomain.duckdns.org" "muc"
    storage = "memory"

	persistent_muc_passwds = "internal";

@damencho your are expert! thank for your help.

I solved my issue with this config:

Component "conference.meet.mydomain.duckdns.org" "muc"
        default_storage = "memory"
...
     storage = {
    	persistent_muc_passwds = "internal";
           }
1 Like

What does persist_muc_passwords do?

I have the same problem as Yassine. But unfortunately not for the same reason.

I do not have the double storage in Component “conference.meet.mydomain.duckdns.org” “muc”

Storage was defined as “none” though. I changed it to memory. The current state is:

Component “conference.meet.mydomain.duckdns.org” “muc”

storage = "memory"

modules_enabled = {

    "muc_meeting_id";

    "muc_domain_mapper";

    -- "token_verification";

}

admins = { "focus@auth.conference.meet.mydomain.duckdns.org" }

muc_room_locking = false

muc_room_default_public_jids = true

– internal muc component

Component “internal.auth.conference.meet.mydomain.duckdns.org” “muc”

storage = "memory"

modules_enabled = {

  "ping";

}

admins = { "focus@auth.conference.meet.mydomain.duckdns.org", "jvb@auth.conference.meet.mydomain.duckdns.org" }

muc_room_locking = false

muc_room_default_public_jids = true

Even changing to “memory” the problem still happens.

Please help :frowning:

try this Ghosts users in some rooms

Thank you ptualek, I tried it but still some ghosts remain. What is funny is that it seems to be working correctly after I restart prosody. And then after a while it stops kicking ghosts.
Now I tried storage = “internal” whatever that means…

I was having this errors in the prosody log:
May 25 17:31:07 modulemanager error Unable to load module ‘storage_memory’: /usr/lib/prosody/modules/mod_storage_memory.lua: No such file or directory

and also this one:
May 27 17:58:27 general error

stack traceback:

/usr/lib/prosody/modules/mod_bosh.lua:483: in function </usr/lib/prosody/modules/mod_bosh.lua:473>

(tail call): ?

/usr/lib/prosody/util/timer.lua:51: in function '?'

/usr/lib/prosody/net/server_select.lua:917: in function </usr/lib/prosody/net/server_select.lua:861>

[C]: in function 'xpcall'

/usr/bin/prosody:400: in function 'loop'

/usr/bin/prosody:431: in main chunk

[C]: ?

I also see that the log date is not correct. it must be with some other time location.

Well… I don’t know what the storage: internal does, but i’m trying it now and see if it is fixed.

1 Like

still having this error:

May 29 08:58:20 general error

stack traceback:

/usr/lib/prosody/modules/mod_bosh.lua:483: in function </usr/lib/prosody/modules/mod_bosh.lua:473>

(tail call): ?

/usr/lib/prosody/util/timer.lua:51: in function '?'

/usr/lib/prosody/net/server_select.lua:917: in function </usr/lib/prosody/net/server_select.lua:861>

[C]: in function 'xpcall'

/usr/bin/prosody:400: in function 'loop'

/usr/bin/prosody:431: in main chunk

[C]: ?