Earlier today our jabber service stopped working properly. After some poking around and tailing every log we could find, we discovered somehow inserting certain characters in a user's Status will prevent the our user community from using the openfire server for jabber service. Essentially making the openfire server useless.
User who's status caused the XML parsing error is using Adium 1.5.1 running on Mac OS X 10.7.4
From My Pidgin 2.6.6 Debug Window:
(14:52:31) jabber: Recv (ssl)(285): <presence from="XXX@XXX.XXX/xs-MacBook-Air" to="XXX@XXX.XXX/XXX"><status>@ the office</status><c xmlns="http://jabber.org/protocol/caps" node="http://pidgin.im/" hash="sha-1" ver="DdnydQG7RGhP9E3k9Sf+b+bF0zo="/><x xmlns="vcard-temp:x:update"><photo/></x></presence>
(14:52:31) jabber: XML parser error for JabberStream 0x289d510: Domain 1, code 9, level 3: xmlParseCharRef: invalid xmlChar value 16
(14:52:31) jabber: xmlParseChunk returned fatal 9
(14:52:31) connection: Connection error on 0x302c1c0 (reason: 0 description: XML Parse error)
From the server's openfire error.log:
==> error.log <==
2012.06.12 14:07:06 org.jivesoftware.openfire.muc.HistoryRequest - Error parsing date from history management
java.text.ParseException: Unparseable date: "2012-06-12T21:06:06Z"
at java.text.DateFormat.parse(DateFormat.java:337)
at org.jivesoftware.openfire.muc.HistoryRequest.<init>(HistoryRequest.java:84)
at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:478)
at org.jivesoftware.openfire.muc.spi.LocalMUCUser.process(LocalMUCUser.java:197)
at org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl.processPacket(MultiU serChatServiceImpl.java:321)
at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents .process(InternalComponentManager.java:587)
at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImp l.java:352)
at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:237)
at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:179)
at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:85)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84)
at org.jivesoftware.openfire.net.StanzaHandler.processPresence(StanzaHandler.java: 355)
at org.jivesoftware.openfire.net.ClientStanzaHandler.processPresence(ClientStanzaH andler.java:100)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:272)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:194)
at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:169)
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:662)
Server information:
Server Properties
Server Uptime: 49 minutes -- started Jun 12, 2012 2:10:28 PM
Version: Openfire 3.7.1
Server Directory: /usr/share/openfire
Server Name: XXX.XXX
Environment
Java Version: 1.6.0_26 Sun Microsystems Inc. -- Java HotSpot(TM) 64-Bit Server VM
Appserver: jetty/7.0.2-SNAPSHOT
Host Name: XXX
OS / Hardware: Linux / amd64
Locale / Timezone: en / Mountain Standard Time (-7 GMT)
Java Memory 257.55 MB of 2002.50 MB (12.9%) used