mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-12-22 10:37:59 +01:00
Fix EntityCapsManager presenceSend
capturing all outoing presences of type 'available' would also capture presences not used for presence broadcast, e.g., MUC presences. This caused the EntityCaps integration test (localEntityCaps) to fail if the MUC integration test was run before.
This commit is contained in:
parent
ca394838f0
commit
ecf1ed7f6b
3 changed files with 45 additions and 1 deletions
|
@ -0,0 +1,42 @@
|
|||
/**
|
||||
*
|
||||
* Copyright © 2016 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jivesoftware.smack.filter;
|
||||
|
||||
import org.jivesoftware.smack.packet.Stanza;
|
||||
import org.jxmpp.jid.Jid;
|
||||
|
||||
public final class EmptyToMatcher implements StanzaFilter {
|
||||
|
||||
public static final EmptyToMatcher INSTANCE = new EmptyToMatcher();
|
||||
|
||||
private EmptyToMatcher() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(Stanza packet) {
|
||||
Jid packetTo = packet.getTo();
|
||||
if (packetTo == null) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName();
|
||||
}
|
||||
}
|
|
@ -35,6 +35,8 @@ public final class PresenceTypeFilter extends FlexibleStanzaTypeFilter<Presence>
|
|||
public static final PresenceTypeFilter ERROR = new PresenceTypeFilter(Type.error);
|
||||
public static final PresenceTypeFilter PROBE = new PresenceTypeFilter(Type.probe);
|
||||
|
||||
public static final StanzaFilter OUTGOING_PRESENCE_BROADCAST = new AndFilter(AVAILABLE, EmptyToMatcher.INSTANCE);
|
||||
|
||||
private final Presence.Type type;
|
||||
|
||||
private PresenceTypeFilter(Presence.Type type) {
|
||||
|
|
|
@ -340,7 +340,7 @@ public final class EntityCapsManager extends Manager {
|
|||
public void processPacket(Stanza packet) {
|
||||
presenceSend = (Presence) packet;
|
||||
}
|
||||
}, PresenceTypeFilter.AVAILABLE);
|
||||
}, PresenceTypeFilter.OUTGOING_PRESENCE_BROADCAST);
|
||||
|
||||
// Intercept presence packages and add caps data when intended.
|
||||
// XEP-0115 specifies that a client SHOULD include entity capabilities
|
||||
|
|
Loading…
Reference in a new issue