diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RevokeDeviceFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RevokeDeviceFlow.java index e8d51cc0721fe2072e466c5d88b8c7bbd9803f6c..61c94802c2495ad842179a397dec92e3b5dbd75f 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RevokeDeviceFlow.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RevokeDeviceFlow.java @@ -20,7 +20,6 @@ public class RevokeDeviceFlow { public static DeviceRevocationResponse revokeDevice(String username, RevocationRequest request){ DeviceRevocationResponse response = new DeviceRevocationResponse(); try { - StatementList statementList = new StatementList(); StatementElement st1 = new StatementElement("owner","=",username,"AND"); StatementElement st2 = new StatementElement("deviceId","=",request.getIdentifier().toString(),""); @@ -31,13 +30,19 @@ public class RevokeDeviceFlow { log.error("Could not find device!"); return null; } - certificateAuthority.revokeCertificate(request); - if (certificateAuthority.getLatestCRL().get().getRevokedCertificates().toArray().length != 0) { - response.setSuccess(true); + long statTime = System.currentTimeMillis(); + while(certificateAuthority.getLatestCRL().get() + .getRevokedCertificate(device.getCertificate().getSerialNumber()) == null){ + log.warn("Certificate has not yet appeared in CRL!"); + if(System.currentTimeMillis() - statTime > 1000){ + log.error("The certificate has not appered within 1 second, we are considering the operation has failed"); + response.setSuccess(false); + return response; + } } - //Finally we return the successful response + response.setSuccess(true); return response; } catch (Exception e){