XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Won't Fix
    • Affects Version/s: 3.6.3
    • Fix Version/s: None
    • Component/s: Core
    • Labels:
      None

      Description

      Sending the following XMPP-Packet to the Server

      <presence><show/></presence>

      results in a warning like this:

      2009.03.17 17:27:01 Invalid presence show for -<presence><show/></presence>               
      java.lang.IllegalArgumentException: No enum const class org.xmpp.packet.Presence$Show.
      at java.lang.Enum.valueOf(Enum.java:196)
      at org.xmpp.packet.Presence$Show.valueOf(Presence.java:378)
      at org.xmpp.packet.Presence.getShow(Presence.java:137)
      at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:239)
      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)

      RFC3921, Page 7, Section 2.2.2.1. is a bit misunderstanding in this case.

         The OPTIONAL  element contains non-human-readable XML
         character data that specifies the particular availability status of
         an entity or specific resource.  A presence stanza MUST NOT contain
         more than one  element.  The  element MUST NOT possess
         any attributes.  If provided, the XML character data value MUST be
         one of the following (additional availability types could be defined
         through a properly-namespaced child element of the presence stanza):
      
         o  away -- The entity or resource is temporarily away.
         o  chat -- The entity or resource is actively interested in chatting.
         o  dnd -- The entity or resource is busy (dnd = "Do Not Disturb").
         o  xa -- The entity or resource is away for an extended period (xa =
            "eXtended Away").
      
         If no  element is provided, the entity is assumed to be online
         and available.

      The question is: Does the "if provided" reference to the element itself or the XML character data? Because this is unclear I would say both is allowed. However, it seems some client out there do use this.

      I think the problem is located in org.xmpp.packet.Presence#getShow

          public Show getShow() {
              String show = element.elementText("show");
              if (show == null) {
                  return null;
              }
              else {
                  return Show.valueOf(show);
              }
          }

      I'm not sure, but probably element.elementText returns an empty string in this case instead of NULL. An additional check should solve the problem. It is possible that this little problem is causing other problems. I had strange server problems in these days. Login not working, Clients get kicked when joining a MUC room....strange things. I'm not sure this is related, just wanted to mention it if someone else has this problems.

      See also http://www.igniterealtime.org/community/message/189221

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              gaston Gaston Dombiak
              Reporter:
              coolcat Martin Weusten
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: