Hi all,
Iā've written a plugin that implements the org.jivesoftware.wildfire.interceptor.PacketInterceptor interface. This was part of my interceptPacket() implementation.
public void interceptPacket(Packet packet, Session session, boolean incoming, boolean processed) {
// ...
final InetAddress inet = session.getConnection().getInetAddress();
// ...
}
Retrieving the InetAddress like this works in most cases, but in some, but regularly occuring cases, Openfire (3.2.2) throws a NullPointerException (below). Apparently, either the Session object, or session.getConnection() is null in some cases. Is that intended? I was assuming that by the time the packet was intercepted, the Connection on which it came should be available.
2007.03.23 07:43:21 [org.jivesoftware.wildfire.interceptor.InterceptorManager.invokeInterceptors(InterceptorManager.java:239)] Error in interceptor: com.buzzaa.wildfire.plugin.event.EventPlugin@22cc74e7
java.lang.NullPointerException
at com.buzzaa.wildfire.plugin.event.EventPlugin.interceptPacket(EventPlugin.java:312)
at org.jivesoftware.wildfire.interceptor.InterceptorManager.invokeInterceptors(InterceptorManager.java:227)
at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:84)
at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)
at org.jivesoftware.wildfire.net.StanzaHandler.processIQ(StanzaHandler.java:289)
at org.jivesoftware.wildfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler.java:79)
at org.jivesoftware.wildfire.net.StanzaHandler.process(StanzaHandler.java:254)
at org.jivesoftware.wildfire.net.StanzaHandler.process(StanzaHandler.java:153)
at org.jivesoftware.wildfire.nio.ConnectionHandler.messageReceived(ConnectionHandler.java:131)
at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:703)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:54)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800)
at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:62)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:192)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:54)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800)
at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:250)
at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:305)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)