Merge pull request #510 from Flowdalic/future-invoke-at-most-once

[SmackFuture] Invoke the callbacks at most once
master
Florian Schmaus 6 months ago committed by GitHub
commit e25be8fea4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      smack-core/src/main/java/org/jivesoftware/smack/SmackFuture.java

@ -162,16 +162,20 @@ public abstract class SmackFuture<V, E extends Exception> implements Future<V>,
return result;
}
private boolean callbacksInvoked;
protected final synchronized void maybeInvokeCallbacks() {
if (cancelled) {
if (cancelled || callbacksInvoked) {
return;
}
if ((result != null || exception != null) && completionCallback != null) {
callbacksInvoked = true;
completionCallback.accept(this);
}
if (result != null && successCallback != null) {
callbacksInvoked = true;
AbstractXMPPConnection.asyncGo(new Runnable() {
@Override
public void run() {
@ -180,6 +184,7 @@ public abstract class SmackFuture<V, E extends Exception> implements Future<V>,
});
}
else if (exception != null && exceptionCallback != null) {
callbacksInvoked = true;
AbstractXMPPConnection.asyncGo(new Runnable() {
@Override
public void run() {

Loading…
Cancel
Save