Allow any member to retrieve the room's member list even if not yet an occupant

Description

from https://discourse.igniterealtime.org/t/listing-members-when-not-joined/55148/7#203474

Currently Openfire is not letting a user to get list of room's occupants if that user is not yet an occupant of that room. Though specs say a service should allow that.

This is what XEP-0045 has to say (taken from section 9.5 just under example 119): "A service SHOULD also allow any member to retrieve the member list even if not yet an occupant".

Environment

None

Activity

Show:
csh
November 2, 2015, 9:10 AM

Currently not. Requires too many major changes to the MUC logic.

Daryl Herzmann
October 31, 2015, 3:12 AM

Hi CSH, are you still looking into this?

csh
June 7, 2014, 10:20 PM

Had a look at this. The problem is in LocalMUCUser#process, which returns the error, if the sender is not an occupant. Tried to rectify this, but figured out, that it would require major changes to the MUC logic, because the IQAdminHandler as well as the IQOwnerHandler all require a MUCRole instance (aka occupant).

=> Seems like you can only make admin actions while you are in the room, which is not good.

Daryl Herzmann
May 23, 2014, 8:05 PM

Will reopen and assign to CSH to see what he thinks

Colton Yaroschak
May 23, 2014, 7:07 PM
Edited

I'm not sure this is actually resolved, from what I can tell there is still an error preventing Openfire from returning a member-list from a member-only MUC when the query for the member-list is made before the user has joined the room. RawToast, are you sure Openfire supports the retrieval of member list from room members who have not yet joined the room?

I'm currently running the latest build of Openfire (3.9.3) and I've created a member-only MUC, added two JIDs to the member list, one admin and one member. If I send the following stanza from a JID on the member list

<body rid='551802513' xmlns='http://jabber.org/protocol/httpbind' sid='42731cc7'>
<iq from='t1@server-pc/42731cc7' id='0.38287348952144384' to='test@chatservice.server-pc' type='get' xmlns='jabber:client'>
<query xmlns='http://jabber.org/protocol/muc#admin'>
<item affiliation='member'/>
</query>
</iq>
</body>

Openfire responds with

<body xmlns='http://jabber.org/protocol/httpbind'>
<iq xmlns="jabber:client" type="error" id="0.38287348952144384" from="test@chatservice.server-pc" to="t1@server-pc/42731cc7">
<query xmlns="http://jabber.org/protocol/muc#admin">
<item affiliation="member"/>
</query>
<error code="401" type="auth">
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
</body>

even though the user who requested the information has been added to the member-list as shown on the Openfire admin console. Is there any work-around for this?

Your pinned fields
Click on the next to a field label to start pinning.

Assignee

Unassigned

Reporter

wroot