LdapVCardProvider: Invalid vcard changes

Greeting, I am getting the following error:

[org.jivesoftware.openfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:9 2)]
java.lang.UnsupportedOperationException: LdapVCardProvider: Invalid vcard changes.
at org.jivesoftware.openfire.ldap.LdapVCardProvider.updateVCard(LdapVCardProvider. java:319)
at org.jivesoftware.openfire.vcard.VCardManager.setVCard(VCardManager.java:150)
at org.jivesoftware.openfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:8 3)
at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:49)
at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:351)
at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:101)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:68)
at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:319)
at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler .java:79)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:284)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:176)
at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:133)
at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:185)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239)
at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.lang.Thread.run(Thread.java:619)

I have done a lot of searching on this error unable to find any clear answers. So i will do my best to provide answers to the questions i know are going to be asked:

  • I am running Openfire standalone 3.6.3. - Ubuntu

  • ldap.override.avatar = true

  • ldap.vcard-mapping = {sn}{givenName}{mail}{displayName}{disp layName}image/jpeg{jpegPhoto}</P HOTO>{homePostalAddress}{ postOfficeBox}{l}{st}{post alCode}{c}{homePhone}</NU MBER>{telephoneNumber}{mobile}{pager}</NU MBER>{facsimileTelephoneNumber}{title}{wWWHomePage}{company}{department}

(one long string)

NOTE: I get this error when any user connects to chat server.

Any insight would greatly appreciated.

-wook

http://www.igniterealtime.org/community/docs/DOC-1773

That is only valid for Active Directory as your LDAP.

Todd - Thank you for your reply… however i had already seen that post. Relooking over my post i noticed spaces. Those spaces are not in openfire config. Also the first post (in the link) stated that need ldap.vmap-mapping needed to be edited directly in DB… I have looked in DB and updates to the ofProperty table where name = ‘ldap.vcard-mapping’ are changed when editing from GUI. How do you reload if it isn’t loaded on startup? Am I missing something?

cheers,

I am not sure I follow. Any changes to the mapping must be made via the system properties of the admin site. You should not be editing the database directly, ever. Direct editting of the database can cause any number of errors if you make a mistake.

Can you provide more information as to what triggers this error or when it started (i.e. was it after editting the db)? Remember LDAP is read only and users have no rights to commit changes to their vcard info other than avatar if you allowed that function. Any attempts to modify the vcard via a client will throw an error.

To clarify, All changes to openfire are made through admin site. Nothing is edited in DB directly, in http://www.igniterealtime.org/community/docs/DOC-1773

Jun 9, 2009 7:35 PM

tonittt tonittt says:

beware of the spaces in the post, like </P HOTO>

if you set a bad syntax in the gui you will need to correct it in the database directly because the property is not loaded on startup.

-Hence my question in previous post about editing the DB directly. I was looking for clarification on this, and what if the orginial string had been set wrong how other than editing in the admin site and restarting openfire do you fix it?

To answer your questions,

This error has been from day one. We just set up this server a couple of months back. This error only shows up when clients log into the chat server. I have several lines of thought, 1. Thinking that maybe Pidgin or whatever client they are using is trying to write a vcard? As we both know the LDAP is read only. In your knowledge would this coinside with the error that i am getting? I am using pidgin personally and see the error when i log in. Put pidgin in to debug mode and I don’t see any place where it is trying to write a vcard. 2. Could a previously incorrect value in the ldap.vcard-mapping field, (even thought it is correct now) be affecting it as tonitts says “property is not loaded on startup”? If so what are the steps to fix this? rebuild a DB?

Thank you for you thoughts, -wook

Any Takers? Still an issue.

the vcard mappings pull from the server with ldap. if you fixed them then the next time the server refreshes the ldap the info will be fixed. the only time you should see an error is if a. there is an error in the ldap profile, or b. the client is messing up.

try logging in with another client with clean logs and see if it throws an error.

I also have this problem with a fresh install of 3.6.4 on Debian Lenny. I’ve updated the vcard mapping as per that previous post and set ldap.override.avatar = true. I’m using Pidgin.

One thing I noticed in the debug log is that after all the ldap provider maps all the attributes, this line shows up:

LdapVCardProvider: PHOTO element didn’t change, no reason to accept this, rejecting.

Could this be causing the error? Note also that if I delete the ldap.override.avatar property the error log give me:

java.lang.UnsupportedOperationException: VCard provider is read-only.

instead of “Invalid vcard changes”.

Tried using Pandion. The error doesn’t show up. Looks to be a problem with Pidgin (I’m using version 2.5.5 on Ubuntu Jaunty).

I have been running for almost a year with this error. Really havent seen it affect anything.