static void returnPrivacyListErrorToSender(Packet packet) {
        // http://xmpp.org/extensions/xep-0016.html#protocol-error
        if (packet instanceof Message) {
            // For message stanzas, the server SHOULD return an error, which SHOULD be <service-unavailable/>.
            if (((Message)packet).getType() == Message.Type.error){
                Log.debug("Avoid generating an error in response to a stanza that itself is an error (to avoid the chance of entering an endless back-and-forth of exchanging errors). Suppress sending an {} error in response to: {}", PacketError.Condition.service_unavailable, packet);
                return;
            }
            final Message message = (Message) packet;
            Message result = message.createCopy();
            result.setTo(message.getFrom());
            result.setFrom(message.getTo());
            result.setError(PacketError.Condition.service_unavailable);
            Log.trace("Responding with 'service-unavailable' as message cannot be processed to: {}", packet);
            XMPPServer.getInstance().getPacketRouter().route(result);
        } else if (packet instanceof IQ) {
            // For IQ stanzas of type "get" or "set", the server MUST return an error, which SHOULD be <service-unavailable/>.
            // IQ stanzas of other types MUST be silently dropped by the server.
            final IQ iq = (IQ) packet;
            if (iq.getType() == IQ.Type.get || iq.getType() == IQ.Type.set) {
                Log.trace("Responding with 'service-unavailable' as IQ request cannot be processed to: {}", packet);
                IQ result = IQ.createResultIQ(iq);
                result.setError(PacketError.Condition.service_unavailable);
                XMPPServer.getInstance().getPacketRouter().route(result);
            }
        }
    }
Returns true if the specified packet must not be blocked based on the active or default
privacy list rules. The active list will be tried first. If none was found then the
default list is going to be used. If no default list was defined for this user then
allow the packet to flow.

@param stanza the packet to analyze if it must be blocked.
@return true if the specified packet must *not* be blocked.
xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalClientSession.java