/** * Routes the Presence packet. * * @param packet the packet to route */ public void route(Presence packet) { if (packet == null) { throw new NullPointerException(); } // 根据发送包的jid查询建立连接的会话(session) ClientSession session = sessionManager.getSession(packet.getFrom()); // 当没有建立连接且状态为非连接状态,进行Presence包处理 if (session == null || session.getStatus() != Session.STATUS_CONNECTED) { handle(packet); } else { // 返回未授权错误 packet.setTo(session.getAddress()); packet.setFrom((JID) null); packet.setError(PacketError.Condition.not_authorized); session.process(packet); } }