Make IQRequestHandler the only option to handle IQ requests

Previously StanzaListeners and Collectors where able to receive IQ of
type 'get' or 'set' (i.e., IQ requests) when no IQRequestHandler was
registered. By moving the 'return' statement one level down, even
listeners/collectors won't receive them.
This commit is contained in:
Florian Schmaus 2017-08-16 21:06:23 +02:00
parent 9bb0ed150b
commit 8020fc1416
1 changed files with 6 additions and 11 deletions

View File

@ -1026,12 +1026,10 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
protected void invokeStanzaCollectorsAndNotifyRecvListeners(final Stanza packet) { protected void invokeStanzaCollectorsAndNotifyRecvListeners(final Stanza packet) {
if (packet instanceof IQ) { if (packet instanceof IQ) {
final IQ iq = (IQ) packet; final IQ iq = (IQ) packet;
final IQ.Type type = iq.getType(); if (iq.isRequestIQ()) {
switch (type) {
case set:
case get:
final String key = XmppStringUtils.generateKey(iq.getChildElementName(), iq.getChildElementNamespace()); final String key = XmppStringUtils.generateKey(iq.getChildElementName(), iq.getChildElementNamespace());
IQRequestHandler iqRequestHandler = null; IQRequestHandler iqRequestHandler = null;
final IQ.Type type = iq.getType();
switch (type) { switch (type) {
case set: case set:
synchronized (setIqRequestHandler) { synchronized (setIqRequestHandler) {
@ -1102,14 +1100,11 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
} }
} }
}); });
// The following returns makes it impossible for packet listeners and collectors to
// filter for IQ request stanzas, i.e. IQs of type 'set' or 'get'. This is the
// desired behavior.
return;
} }
break; // The following returns makes it impossible for packet listeners and collectors to
default: // filter for IQ request stanzas, i.e. IQs of type 'set' or 'get'. This is the
break; // desired behavior.
return;
} }
} }