Cannot set MUC avatar with LdapVCardProvider

Hello.

I found the following seemingly related errors in the log after trying to set a MUC avatar:

ERROR [socket_c2s_ssl-thread-2]: org.jivesoftware.openfire.ldap.LdapVCardProvider - User 'test3@conference.example.com' not found (negative lookup cache result)
org.jivesoftware.openfire.user.UserNotFoundException: User 'test3@conference.example.com' not found (negative lookup cache result)
ERROR [socket_c2s_ssl-thread-2]: org.jivesoftware.openfire.muc.spi.IQMUCvCardHandler - Cannot invoke "org.dom4j.Element.asXML()" because "vCardElement" is null
java.lang.NullPointerException: Cannot invoke "org.dom4j.Element.asXML()" because "vCardElement" is null

It seems that it tries to look up the chat name in the LDAP directory and it is obviously not present there.

I think these settings may be related, so I post them as well:

provider.vcard.className=org.jivesoftware.openfire.ldap.LdapVCardProvider
ldap.override.avatar=true
xmpp.muc.vcard.enabled=true

I also tried to set provider.vcard.className to the default value, and it fixed the problem. But it would probably break something in LDAP integration, so I can’t keep it this way.

Are there any other workarounds?

Openfire 4.8.1, build 6f4eb4c on Debian 12, embedded database.
LDAP is Active Directory, Server 2016.
The client is Gajim 1.7.3.

Seems that Openfire tries to merge a non-existing vcard (as there is no user matching the room name) with avatar data, causing this failure.

I’ve raised this ticket in our bug tracker for this problem: [OF-2832] - Ignite Realtime Jira. I’ve created a provisional fix here: OF-2832: LDAP MUC avatar by guusdk · Pull Request #2465 · igniterealtime/Openfire · GitHub

1 Like

Thank you.