mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 14:22:05 +01:00
Use Async.go() in OMEMO PEPListener
to avoid a deadlock, since the PEP listener is synchronous.
This commit is contained in:
parent
58181bab08
commit
c70a1921db
1 changed files with 16 additions and 9 deletions
|
@ -814,17 +814,24 @@ public final class OmemoManager extends Manager {
|
||||||
Set<Integer> deviceListIds = omemoDeviceListElement.copyDeviceIds();
|
Set<Integer> deviceListIds = omemoDeviceListElement.copyDeviceIds();
|
||||||
//enroll at the deviceList
|
//enroll at the deviceList
|
||||||
deviceListIds.add(ourDeviceId);
|
deviceListIds.add(ourDeviceId);
|
||||||
omemoDeviceListElement = new OmemoDeviceListVAxolotlElement(deviceListIds);
|
final OmemoDeviceListVAxolotlElement newOmemoDeviceListElement = new OmemoDeviceListVAxolotlElement(deviceListIds);
|
||||||
|
|
||||||
|
// PEPListener is a synchronous listener. Avoid any deadlocks by using an async task to update the device list.
|
||||||
|
Async.go(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
try {
|
try {
|
||||||
OmemoService.publishDeviceIds(OmemoManager.this, omemoDeviceListElement);
|
OmemoService.publishDeviceIds(OmemoManager.this, newOmemoDeviceListElement);
|
||||||
} catch (SmackException | InterruptedException | XMPPException.XMPPErrorException e) {
|
}
|
||||||
|
catch (SmackException | InterruptedException | XMPPException.XMPPErrorException e) {
|
||||||
// TODO: It might be dangerous NOT to retry publishing our deviceId
|
// TODO: It might be dangerous NOT to retry publishing our deviceId
|
||||||
LOGGER.log(Level.SEVERE,
|
LOGGER.log(Level.SEVERE,
|
||||||
"Could not publish our device list after an update without our id was received: "
|
"Could not publish our device list after an update without our id was received: "
|
||||||
+ e.getMessage());
|
+ e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue